Рассмотрим аннотацию на основе макросов Scala, такую как @ memoise из macmemo. Для аннотации требуются два аргумента: максимальный размер кеша и время жизни, например,
@memoize(maxSize = 20000, expiresAfter = 2 hours)
Допустим, вы хотите создать аннотацию @cacheall
, эквивалентную @memoize(maxSize = Int.MaxValue, expiresAfter = 100 days)
, чтобы уменьшить шаблон и иметь единую точку параметризации.
Есть ли стандартный шаблон для такого типа повторного использования? Очевидно,
class cacheall extends memoize(Int.MaxValue, 100 days)
не будет работать из-за синтаксического анализа аргументов во время компиляции в макросе.