я столкнулся следующий кодом в специальном выпуске Scala JAXMag в:Использования ленивого Вала для кэширования строкового представления
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)
}
Или это просто случай ненужной оптимизации?
ленивый должен вытолкнуть вычисление значения до его вызова. Однако, хороший вопрос. Создает ли объект объект для хранения функции для оценки? – wheaties
Просто чтобы вы знали, вы можете получить тот же строковый формат, вызвав '(x, y) .toString' – 2010-10-07 17:00:43