gpt4 book ai didi

scala - 像 $read 和 $iw 这样的奇怪名称在具体化表达式中做了什么?

转载 作者:行者123 更新时间:2023-12-04 19:09:35 26 4
gpt4 key购买 nike

以下是我的 Scala 提示中的一些片段。我导入反射 API 并尝试具体化一些表达式,如 docs here 中所述.

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 , 和 $iw在第二个。它们是什么,它们为什么在那里?

最佳答案

val str ...在 REPL 中实际上不是语言环境变量,而是某个对象的属性。见 this answer .

包装变量定义和reify用这样的代码块调用:

{
val str = ...
showRaw{reify {...}}
}

关于scala - 像 $read 和 $iw 这样的奇怪名称在具体化表达式中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16482344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com