Lazy-calc и mutable
От: Hоmunculus  
Дата: 17.11.25 03:53
Оценка:
Есть константная функция, которая что-то возвращает. Но, она возвращает лениво-вычесленные данные, то есть они вычисляются при первом обращении. Это нормально сделать эти данные mutable? Или кривой архитектурный шаг?
Re: Lazy-calc и mutable
От: Pzz Россия https://github.com/alexpevzner
Дата: 17.11.25 07:02
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Есть константная функция, которая что-то возвращает. Но, она возвращает лениво-вычесленные данные, то есть они вычисляются при первом обращении. Это нормально сделать эти данные mutable? Или кривой архитектурный шаг?


А как иначе?

Логически то, что ты возвращаешь — константные данные. То, что ты их вычисляешь при первом обращении — деталь реализации. Поэтому да, mutable. Он примерно для этого и придуман.
Re: Lazy-calc и mutable
От: Chorkov Россия  
Дата: 17.11.25 07:45
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Есть константная функция, которая что-то возвращает. Но, она возвращает лениво-вычесленные данные, то есть они вычисляются при первом обращении. Это нормально сделать эти данные mutable? Или кривой архитектурный шаг?


Если пользователь класса не должен знать, что вычисление кэшируется, то mutable — нормально.

Если пользователь должен значь про кэширование и как-то это учитывать, например, вызывая сбросы кэша при глобальных изменениях, то лучше сделать функцию не константной.
(Пусть он сам объявит экземпляр класса mutable, при необходимости.)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.