Здравствуйте! Подскажите, есть ли в PascalABC.NET аналог lru_cache (list recently used) из модуля functools языка Python, который “запоминает” недавно использованные значения функций?
В смысле, игрушка для мемоизации? Нет.
Функцию которая создаёт обёртку с кэшем для любой другой функции не получится сделать, потому что статическая типизация.
Но объект который используется для самого кэша, то есть хеш-таблица для поиска значения по ключу, это Dictionary<TKey, TValue>
.
Для значений ещё можно использовать System.WeakReference
, чтоб автоматически удалять объекты которые давно не использовались, если оперативки не хватает. Но тогда надо будет по-умному удалять и соответствующие ключи из словаря.
Наверное ещё 1 классом-обёрткой значения, с методом Finalize
, удаляющим свой ключ из словаря.
Я изучаю шарп больше года, и понимаю, что тут написано. Но человек, который задал подобный вопрос, вряд ли имеет такие же познания в .NET
И это отличная причина, чтобы оставить в покое сию “крамольную” мысль.
И это отличная причина чтоб ТС пользовался гуглом, а не просто ждал всех ответов.
Все ответы уже даны в первом сообщении
В версии 3.8.1 у функций появилась возможность указывать атрибут [cache].