内联常量意味着什么?

Ale*_*dar 3 scala

我正在阅读本文,其中有这段代码:

object ChildActor {

  final val Name = "child-actor"

  def apply(value: Int): Props = Props(new ChildActor(value))
}
Run Code Online (Sandbox Code Playgroud)

和一个说明:

当定义常量final并以大写字母开头时,Scala编译器将内联它们。

我不明白 我知道方法内联,其中为方法调用消除了新的堆栈框架。但是,对编译器内联一个常量意味着什么,您可以澄清一下吗?

Yam*_*luş 5

好吧,我对scala本身并不熟悉,但是术语“内联常量”意味着它将常量引用更改为常量值,并在编译时将常量的值直接硬编码为任何引用。这样就不需要额外的存储空间来保留引用。

因此,在编译时,编译器将代码更改为

final val Name = "child-actor" 
val otherName = Name
Run Code Online (Sandbox Code Playgroud)

被视为

final val Name = "child-actor" 
val otherName = "child-actor"
Run Code Online (Sandbox Code Playgroud)