有没有其他的方式使它成为另一种方式比封闭和define_method?在新方法中“嵌入”或使变量“静态”的其他方法?
说我有这样的:
def test
result=[1,2,3]
metadata=['foo', 'bar'] # for simplicity, could be fetched from database
result.define_singleton_method :headers, lambda { metadata }
result
end
我很好奇,是否有其他的方式嵌入,使静态的或不好,“复制”元数据变量进入方法在Ruby中?
你可以添加一些更多的代码,描述你想要什么?显示它与没有嵌入的东西有什么不同。 – 2012-04-02 23:16:28
如果您需要简单的迭代功能,子类化数组或包含Enumerable模块的类还有什么用处? – 2012-04-02 23:32:03
Andrew:由于范围不同,因此元数据变量在f.e.时未定义。像在Matherus Moreira中定义的答案或者定义def在body中的闭包,并且调用test.headers – 2012-04-02 23:46:09