Одна удобная особенность Scala заключается в том lazy val
, что оценка a val
откладывается до тех пор, пока это необходимо (при первом доступе).
Конечно, a lazy val
должен иметь некоторые издержки - где-то Scala должен отслеживать, было ли значение уже оценено, и оценка должна быть синхронизирована, потому что несколько потоков могут пытаться получить доступ к значению в первый раз одновременно.
Какова стоимость a lazy val
- есть ли скрытый логический флаг, связанный с a, lazy val
чтобы отслеживать, был ли он оценен или нет, что именно синхронизируется и есть ли какие-либо дополнительные затраты?
Кроме того, предположим, что я делаю это:
class Something {
lazy val (x, y) = { ... }
}
Это то же самое , как иметь два отдельных lazy val
сек x
и y
или я получаю накладные расходы только один раз, для пары (x, y)
?
bitmap$0
поле в текущей реализации изменчиво (2.8).