I napotkał następujący kod w JAXMag Scala specjalnym wydaniu:Zastosowanie leniwe val do buforowania reprezentację ciąg
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = position
private lazy val position = "(%s, %s)".format(x, y)
}
Czy użycie lazy val
w powyższym kodzie zapewniają znacznie większą wydajność niż następującego kodu?
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = "(%s, %s)".format(x, y)
}
A może jest to tylko przypadek niepotrzebnej optymalizacji?
Leniwy powinien wypchnąć obliczenie wartości, dopóki nie zostanie wywołane. Jednak dobre pytanie. Czy tworzy obiekt do przechowywania funkcji oceny? – wheaties
Po prostu wiesz, możesz uzyskać ten sam format ciągu, nazywając '(x, y) .toString' –