当实现只是抛出新错误时,Scala Array apply 方法如何返回索引处的值

vij*_*ani 5 scala

在发帖之前我挠了挠头。

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 会发送给我)。

这确实令人困惑,如何在这里获取特定索引处的元素?

Rya*_*ach 3

根据what-is-magic-of-scala-array-apply, Scala 编译器会插入,并且 Scala 运行时有几个类定义,它们的存在只是为了提供要链接的内容,否则由编译器魔术处理。

Scala 编译器在为其 确定为类型数组的访问器的Apply 方法创建字节码时:将生成用于直接与数组交互的 jvm 字节码