インタプリタ内で定義した値を取得するメソッド であるvalueOfTermが常にNoneを返すので、
調べてみたら、このページに行き着いた。
https://issues.scala-lang.org/browse/SI-4899
どうやら、2.9.1のバグらしく2.9.0-1では、ちゃんと動くらしい。
2.9.1でインタプリタ内で定義した値を取得するには、valueOfTerm使わずに取得しなければならない。
IMainにprevRequestListというprotectedのメソッドがあり、
これは、List[Request]を返すが、このRequestを使って値を取得できるようだ。
たとえば、以下のようにすれば、取得できる。
class MyIMain( s:Settings ) extends IMain( s ) { def lastRequest = prevRequestList.last } val settings = new Settings settings.usejavacp.value = true val main = new MyIMain(settings) main.quietImport("java.util.Date") main.interpret("val d = new Date") println(main.lastRequest.lineRep.call("$result")) main.close()
0 件のコメント:
コメントを投稿