以下は、私の Scala プロンプトからの抜粋です。こちらのドキュメントで説明されているように、リフレクション API をインポートし、いくつかの式を具体化してみます。
scala> import scala.reflect.runtime.{universe => ru}
scala> val str = "Duck I says."
scala> ru.showRaw(ru.reify(println(2)))
res40: String = Expr(Apply(Select(Select(This(newTypeName("scala")),
newTermName("Predef")), newTermName("println")), List(Literal(Constant(2)))))
scala> ru.showRaw(ru.reify(str.length))
res41: String = Expr(Apply(Select(Select(Select(Select(Select(Ident($line4),
newTermName("$read")), newTermName("$iw")), newTermName("$iw")),
newTermName("str")), newTermName("length")), List()))
$line4
これらの記号、$read
、および2 番目の記号が表示されるとは予想していませんでした$iw
。それらは何で、なぜそこにあるのですか?