In org-mode
versuche ich, eine Funktion, eine Variable, zu definieren und dann das Ergebnis des Funktionsaufrufs für die erste Variable einer anderen Variablen zuzuweisen. Dann scheint es jedoch, dass ich diese neue Variable nicht in nachfolgenden Funktionsaufrufen verwenden kann.
Das Inlinen der Funktionsaufrufe funktioniert, aber wenn Sie zuerst den Wert einer Variablen beeinflussen, können Sie schneller debuggen, falls beim ersten Funktionsaufruf etwas schief geht, und um zu vermeiden, dass potenziell teure Berechnungen dupliziert werden.
MWE: ( (require 'ob-emacs-lisp)
bei Bedarf verwenden)
#+name: square
#+begin_src emacs-lisp :var x=3
(message (format "%s" (* x x)))
#+end_src
#+RESULTS: square
: 9
#+name: value
: 45
#+name: squaredvalue
#+call: square(x=value)
#+RESULTS: squaredvalue
: 2025
Now I try to reuse this value:
#+begin_src emacs-lisp :var res=squaredvalue
(message res)
#+end_src
#+RESULTS:
: nil
Inlined calls do work:
#+begin_src emacs-lisp :var res=square(value)
(message res)
#+end_src
#+RESULTS:
: 2025
Das Erweitern des zweiten Codeblocks zeigt:
(let ((res (quote "nil")))
(message res))
Was vermisse ich?
(Dies wurde auf Emacs 24.3.1, 24.4 und 24.5 unter Verwendung von org 8.2.10 getestet.)