2

lineインスタンスの変数にアクセスしようとするとclojure.lang.Compiler$CompilerException失敗しますが、例外のコードを調べると、行変数が存在することがはっきりとわかります。例えば:

user=> (try
  #_=>   (load-string "(+ 2 3)\n(- 3 4)\n())")
  #_=>   (catch clojure.lang.Compiler$CompilerException er
  #_=>     (. er line)))
IllegalArgumentException No matching field found: line for class clojure.lang.Compiler$CompilerException  clojure.lang.Reflector.getInstanceField (Reflector.java:271)

代わり3に結果になることを期待するとき。

変数にアクセスせずline、単に例外を返すだけで、実際に行が表示されます!

user=> (try
  #_=>   (load-string "(+ 2 3)\n(- 3 4)\n())")
  #_=>   (catch clojure.lang.Compiler$CompilerException er
  #_=>     er))
#<CompilerException java.lang.RuntimeException: Unmatched delimiter: ), compiling:(null:3)>

どうしたの?

編集: clojure 1.4.0 での使用

4

1 に答える 1

4

CLJ-788を閉じたこのコミットの 1.5.0 まで、ライン メンバーは追加されませんでした。

このメンバーにアクセスするには、 Clojure 1.5.0に更新する必要があります。

于 2013-06-20T01:28:54.733 に答える