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