Pertanyaan Apakah mungkin untuk memanggil blok kode Org Babel dari blok kode lain?


Saya memiliki sejumlah blok kode Org Babel di Perpustakaan Babel yang saya sebut secara berurutan cukup sering.

Apakah mungkin untuk membuat blok kode Org Babel yang memanggil blok kode lain ini secara berurutan?


4
2018-03-29 20:57


asal


Jawaban:


Ya kamu bisa. Cukup gunakan: var di mana parameter adalah hasil dari eksekusi blok lain.

#+name: clean
#+begin_src ...
...
#+end_src

#+name: plot
#+begin_src :var data=clean
...
#+end_src

4
2018-03-30 21:55



Ya, saya punya beberapa file org-babel di mana saya melakukan itu. Inilah satu cara untuk melakukannya:

#+srcname: foo
#+begin_src python :exports code :tangle yes
  def foo():
      print "I'm foo()"
#+end_src

#+name: bar
#+begin_src python :exports code :tangle yes
  def bar():
      foo()
      print "I'm bar()'"
#+end_src

#+srcname: main
#+begin_src python :exports code :tangle yes
  foo()
  bar()
#+end_src

Output dari ini adalah file yang terlihat seperti ini:

def foo():
    print "I'm foo()"

def bar():
    foo()
    print "I'm bar()'"

foo()
bar()

Jika kode di file org dalam urutan yang berbeda dari apa yang ingin Anda hasilkan, Anda dapat menggunakan tag noweb untuk menghasilkan file kode dalam urutan yang Anda inginkan, seperti:

#+name: bar
#+begin_src python :noweb-ref bar :tangle no
  def bar():
      foo()
      print "I'm bar()'"

#+end_src

#+srcname: foo
#+begin_src python :noweb-ref foo :tangle no
  def foo():
      print "I'm foo()"

#+end_src


#+begin_src python :noweb tangle :tangle yes

  <<foo>>
  <<bar>>

  foo()
  bar()
#+end_src

Output dari kekusutan ini adalah:

def foo():
    print "I'm foo()"

def bar():
    foo()
    print "I'm bar()'"

foo()
bar()

3
2018-03-30 14:53



Saya baru di sini dan tidak akrab dengan Org Babel. Saya menggunakan bahasa lain beberapa tahun yang lalu. Dalam situasi dengan urutan berulang Anda hanya akan menulis urutan sebagai fungsi dan memanggilnya kapan pun Anda membutuhkannya. Biarkan kompiler menangani barang-barang berat. Saya harap ini membantu.


-1
2018-03-29 21:18