Ruby:带参数的可恢复函数
发布时间:2020-12-17 03:26:04 所属栏目:百科 来源:网络整理
导读:我想要一个在 Ruby中保持本地状态的函数.每次我调用该函数时,我想返回一个结果,该结果既依赖于调用参数又依赖于函数的存储状态.这是一个简单的例子: def inc_mult(factor) @state ||= 0 # initialize the state the first time. @state += 1 # adjust the i
我想要一个在
Ruby中保持本地状态的函数.每次我调用该函数时,我想返回一个结果,该结果既依赖于调用参数又依赖于函数的存储状态.这是一个简单的例子:
def inc_mult(factor) @state ||= 0 # initialize the state the first time. @state += 1 # adjust the internal state. factor * @state end 请注意,状态是第一次初始化,但后续调用访问存储状态.这很好,除了@state泄漏到周围的上下文中,这是我不想要的. 重写这个最优雅的方法是什么,以便@state不泄漏? (注意:我的实际例子更多 解决方法
您可能希望将inc_mult封装到自己的类中,因为您希望将其状态与其包含对象分开封装.这就是generator(yield语句)在Python和C#中的工作方式.
像这样简单的东西会这样做: class Foo state = 0 define_method(:[]) do |factor| state += 1 factor * state end end 从哲学上讲,我认为你的目标是与Ruby作为消息的方法观点不相容,而不是与某种程度上独立的函数不相容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |