我想用元数据注释以非介入方式实现 call 缓存(记忆)。

希望它将像这样工作:

class A{
  @Cached
  foo(msg) {
    return msg;
  }
}

void main() {
  @Cached
  var foo = ()=>"hello";
}

只能使用dart:mirrors可以实现吗?

最佳答案

不久前,我写了一篇关于该主题的博客文章。复制到这里太长了,所以这里是链接:

http://dartery.blogspot.com/2012/09/memoizing-functions-in-dart.html

结果是您可以编写高阶的记忆函数,但是由于Dart缺乏灵活的args函数,它们通常受到限制。另外,如果您想将动态编程与递归函数一起使用,则需要在编写代码时牢记备忘录-它需要将自身作为参数,因此您可以传递备忘录版本。

关于dart - 如何实现调用缓存(记忆化),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24049063/

10-15 10:24