2013-03-29 62 views

回答

4

是的,你可以。只需使用:var其中參數是另一個塊執行的結果。

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

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

這就是答案 - 我想創建一個新的代碼塊,將所有代碼塊作爲我想評估的參數:var參數。然後,當我調用新的代碼塊時,所有的參數也會被評估。謝謝! – Conor

+0

是的,您可以根據需要鏈接儘可能多的塊,這樣做。 – fniessen

-1

我是新來的,不熟悉Org Babel。多年前我用過其他語言。在重複序列的情況下,您只需將序列作爲函數編寫並在需要時調用它。讓編譯器處理沉重的東西。我希望這有幫助。

+7

我會回覆這個,因爲你是新來的,沒有解釋就被downvoted了。你的回答沒有幫助。 OP實質上是問如何在Org Babel中實現功能,所以建議他使用一個功能就是告訴他使用一些他顯然不知道如何使用的東西。此外,承認你在回答開始時不知道自己在說什麼,這種邀請可能會降低投票率。請花一些時間使用我們的網站。這裏有很多很棒的信息和很多有用的人,我們都會喜歡你成爲他們中的一員。 –

3

是的,我有幾個org-babel文件,我這樣做。下面是做這件事:

#+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 

的這個輸出是一個類似如下的文件:

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

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

foo() 
bar() 

如果在組織文件中的代碼是不同的順序比你想要什麼生成,您可以使用noweb標籤生成你想要的順序代碼文件,像這樣:

#+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 

糾纏這個的輸出是:

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

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

foo() 
bar() 
+0

以非noweb的方式,如果foo是一個函數需要參數,我如何用參數調用foo並導出結果? – godblessfq