在发帖之前我挠了挠头。
object ScalaPractice extends App {
val nums = Array("zero","one","two")
print(nums.apply(0))
}
Run Code Online (Sandbox Code Playgroud)
applyfrom 方法的实现print(nums.apply(0))只是来自 Array 类,如下所示:
def apply(i: Int): T = throw new Error()
Run Code Online (Sandbox Code Playgroud)
我什至尝试调试,但是,它不会进入此方法(尽管当我尝试打开实现时 IDE 会发送给我)。
这确实令人困惑,如何在这里获取特定索引处的元素?
根据what-is-magic-of-scala-array-apply, Scala 编译器会插入,并且 Scala 运行时有几个类定义,它们的存在只是为了提供要链接的内容,否则由编译器魔术处理。
Scala 编译器在为其 确定为类型数组的访问器的Apply 方法创建字节码时:将生成用于直接与数组交互的 jvm 字节码。