Аналог lru_cache из functools на PascalABC.NET

Здравствуйте! Подскажите, есть ли в PascalABC.NET аналог lru_cache (list recently used) из модуля functools языка Python, который “запоминает” недавно использованные значения функций?

В смысле, игрушка для мемоизации? Нет.

1 лайк

Функцию которая создаёт обёртку с кэшем для любой другой функции не получится сделать, потому что статическая типизация.

Но объект который используется для самого кэша, то есть хеш-таблица для поиска значения по ключу, это Dictionary<TKey, TValue>.

Для значений ещё можно использовать System.WeakReference, чтоб автоматически удалять объекты которые давно не использовались, если оперативки не хватает. Но тогда надо будет по-умному удалять и соответствующие ключи из словаря.
Наверное ещё 1 классом-обёрткой значения, с методом Finalize, удаляющим свой ключ из словаря.

1 лайк

Я изучаю шарп больше года, и понимаю, что тут написано. Но человек, который задал подобный вопрос, вряд ли имеет такие же познания в .NET

И это отличная причина, чтобы оставить в покое сию “крамольную” мысль.

И это отличная причина чтоб ТС пользовался гуглом, а не просто ждал всех ответов.

1 лайк

Все ответы уже даны в первом сообщении :slight_smile:

В версии 3.8.1 у функций появилась возможность указывать атрибут [cache].

1 лайк