我在JAXMag的Scala特刊中遇到了以下代码:
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = position
private lazy val position = "(%s, %s)".format(x, y)
}在上面的代码中使用lazy val是否比下面的代码提供了更高的性能?
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = "(%s, %s)".format(x, y)
}或者这只是一种不必要的优化?
发布于 2010-10-07 23:39:23
在第一个代码片段中,当|if toString方法被调用时,position将只按需计算一次。在第二个代码片段中,toString主体将在每次调用该方法时重新计算。由于x和y不能更改,因此它是没有意义的,应该存储toString值。
https://stackoverflow.com/questions/3883185
复制相似问题