Dalam org-mode
, saya mencoba mendefinisikan fungsi, variabel, dan kemudian menetapkan ke variabel lain hasil dari panggilan fungsi pada variabel pertama. Namun, sepertinya saya tidak bisa menggunakan variabel baru ini dalam panggilan fungsi selanjutnya.
Menggarisbawahi panggilan fungsi tidak berfungsi, tetapi memengaruhi nilai ke variabel terlebih dahulu akan memungkinkan untuk debug lebih cepat jika terjadi kesalahan dalam panggilan fungsi pertama, dan untuk menghindari duplikasi perhitungan yang berpotensi mahal.
MWE: (gunakan (require 'ob-emacs-lisp)
jika perlu)
#+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
Memperluas blok kode kedua menunjukkan:
(let ((res (quote "nil")))
(message res))
Apa yang saya lewatkan?
(Ini telah diuji pada emacs 24.3.1, 24.4 dan 24.5, menggunakan org 8.2.10)