2013-08-08 3 views
0

Предположим, что у меня есть строка типа ленивой Вэл:Изменение Scala ленивое поведение VAL

 
    Class LazyVals { 

    lazy val message = "I am lazy on + " + System.currentTimeMillis().toString  

    def changeLazy = { message + " Not!!" } 
    } 

Will changeLazy изменить «оценить только один раз» характер сообщения?

ответ

3

Код для расчета message будет оцениваться один раз. Вы не можете изменить это поведение.

currentTimeMillis будет называться только один раз. Конкатенация message + " Not!!" будет выполняться на каждом вызове changeLazy с тем же результатом, но может быть оптимизирована jvm.

Смежные вопросы