org模式宝贝中的凹槽



我正在尝试学习groovy,并想使用emacs org模式。我的行动很愉快,正在尝试在可用来源中运行第一个程序,Listing_01_01_Gold.groovy

#+begin_src groovy  :results output
List fibo = [1, 1]                          //#A
List gold = [1, 2]                          //#B
while ( ! isGolden( gold[-1] ) ) {          //#C
    fibo.add( fibo[-1] + fibo[-2] )         //#D
    gold.add( fibo[-1] / fibo[-2] )         //#E
}
println "found golden ratio with fibo(${ fibo.size-1 }) as"
println fibo[-1] + " / " + fibo[-2] + " = " + gold[-1]
println "_" * 10 +  "|"  + "_" * (10 * gold[-1])
def isGolden(candidate) {                   //#F
    def small = 1                           //#G
    def big = small * candidate             //#H
    return isCloseEnough( (small+big)/big, big/small)
}
def isCloseEnough(a,b) { return (a-b).abs() < 1.0e-9 }
//#A Initial Fibonacci numbers
//#B Golden ration candidates
//#C Last gold candidate
//#D Next fibo number
//#E Next golden candidate
//#F Candidate satisfies golden rule
//#G Smaller section
//#H Bigger section
#+end_src

给出此错误

Caught: java.lang.ClassFormatError: Illegal class name "groovy-31624d60$isGolden" in class file groovy-31624d60$isGolden
java.lang.ClassFormatError: Illegal class name "groovy-31624d60$isGolden" in class file groovy-31624d60$isGolden
    at groovy-31624d60.run(groovy-31624d60:4)

我可以很好地想象我做了一些愚蠢的事情,但是没有文档,我只是在猜。但是,简单的事情有效:

#+begin_src groovy :results raw
today = new Date()
#+end_src
#+RESULTS:
Tue Feb 20 15:44:50 EST 2018

不确定该怎么办。但是随后>groovysh Listing_01_01_Gold.groovy,即在终端中也不会运行>groovy Listing_01_01_Gold.groovy。因此,显然我在这里缺少一些基本的东西..

它反对文件名中的破折号:groovy-31624d60。

您需要做的就是将破折号更改为OB-GROOVY.EL第87行的下划线:

(pcase result-type
  (`output
   (let ((src-file (org-babel-temp-file "groovy_")))   ;;; <---HERE
     (progn (with-temp-file src-file (insert body))
          (org-babel-eval
           (concat org-babel-groovy-command " " src-file) ""))))
  (`value ...

我不明白为什么他们使用回头而不是引号。

编辑:"值"输出需要第二个仪表板到underscore替换,文件中的几行更进一步。

相关内容

  • 没有找到相关文章

最新更新