加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Ruby中缓存方法结果

发布时间:2020-12-17 01:36:42 所属栏目:百科 来源:网络整理
导读:在 Python中,我可以轻松地修饰方法,以便记住它们的结果: def store(self): a = line1() b = line2(a) return line3(b) = from lazy import lazy@lazydef store(self): a = line1() b = line2(a) return line3(b) Ruby中是否有一些类似的习惯用法只计算一次
在 Python中,我可以轻松地修饰方法,以便记住它们的结果:

def store(self):
    a = line1()
    b = line2(a)
    return line3(b)

=>

from lazy import lazy

@lazy
def store(self):
    a = line1()
    b = line2(a)
    return line3(b)

Ruby中是否有一些类似的习惯用法只计算一次方法结果?

解决方法

在Ruby中,这通常称为 memoization,它采用以下形式:

def store
  @store ||= begin
    a = line1
    b = line2(a)
    line3(b)
  end
end

但是,如果在多线程环境中使用此代码,则存在一些重要问题,这就是为什么有宝石可以管理它并确保您的惰性初始化程序只运行一次,如果这是一个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读