有沒有其他的方式使它成爲另一種方式比封閉和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