内联常量意味着什么?

时间:2018-01-25 00:27:41

标签: scala

我正在读这个article并且有这段代码:

object ChildActor {

  final val Name = "child-actor"

  def apply(value: Int): Props = Props(new ChildActor(value))
}

并注意:

  

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

我不明白。我知道方法内联,其中为方法调用消除了新的堆栈帧。但是编译器内联常量意味着什么呢,你能澄清一下吗?

1 个答案:

答案 0 :(得分:4)

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

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

final val Name = "child-actor" 
val otherName = Name

被视为

final val Name = "child-actor" 
val otherName = "child-actor"