在Implicit类上扩展AnyVal是否可以提高性能

时间:2016-12-22 17:13:35

标签: scala

在Implicit类上扩展AnyVal是否可以提高性能。我听说这样做不会导致对象创建,但是会发生这种情况。

1 个答案:

答案 0 :(得分:-1)

你在谈论我认为的价值观。查看文档,相当简单易懂:http://docs.scala-lang.org/overviews/core/value-classes.html

如果您有任何疑问,请告诉我们:)

  

编辑:尝试简化文档上提供的解释

值类在编译时被替换。如果你有

case class Name(value: String) extends AnyVal

在编译时,Name的每个实例都将被String表示替换(我无法告诉你哪个阶段,但我现在也很好奇。我将尝试找出并在此处添加信息)。有些信息的另一个问题可能就是我几周前做过的那个:

why scala value class#toString contains case class info?,其中包含链接到another article

的答案

示例:

如果您有以下代码:

def myFunction(name: Name) = {
  "My name is: " + name.value
}

你称之为

myFunction(Name("Jonh"))

你可以想象它(想象一下,因为我不确定它是怎么做的,或者它是否使用静态物体等等)被像

这样的东西取代
def myFunction(name: String) = {
  "My name is: " + name
}

myFunction("Jonh")