在Implicit类上扩展AnyVal是否可以提高性能。我听说这样做不会导致对象创建,但是会发生这种情况。
答案 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")