ho incontrato il seguente codice nel numero speciale Scala di JAXMag:L'uso della val pigra per la cache di rappresentazione di stringa
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = position
private lazy val position = "(%s, %s)".format(x, y)
}
se il suo utilizzo lazy val
nel codice sopra forniscono considerevolmente più prestazioni rispetto il seguente codice?
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = "(%s, %s)".format(x, y)
}
O è solo un caso di ottimizzazione non necessaria?
pigro dovrebbe spingere il calcolo del valore fino a quando non viene chiamato. Comunque, bella domanda. Crea un oggetto per mantenere la funzione per la valutazione? – wheaties
Solo per quello che sai, puoi ottenere lo stesso formato di stringa chiamando '(x, y) .toString' –