我想要在Object
上定義一個方法,它需要一個塊並將接收器應用於該塊。的實現將是這樣的:將自己應用於proc的方法
class Object
def apply ≺ pr.call(self) end
end
2.apply{|x| x * 3} # => 6
是否已有一個標準的方式來做到這一點,或有類似用途的方法的衆所周知的圖書館嗎?如果是這樣,我不想重新發明輪子。
它發生在我經常說,我有一個接受一個可選的塊的方法,當沒有塊,我要回一些return_value
的方法中計算,但是當有一個塊,我想返回應用於該塊的return_value
的返回值。現在,我有行束喜歡:
def method ..., &pr
...
pr ? pr.call(return_value) : return_value
end
,但我想一直寫
def method ..., &pr
...
pr ? return_value.apply(&pr) : return_value
end
,甚至更好,用apply
稍微修改定義,
def method ..., &pr
...
return_value.apply(&pr)
end
你爲什麼要引入一個新的依賴時,上面列出的小功能能實現你的目標是什麼? – maerics 2012-03-06 20:16:08
@maerics如果有內置的方式,我想使用它。 – sawa 2012-03-06 20:17:05
爲什麼不使用lambda? 'f = - >(x){x * 3};六= f [2]' – 2012-03-06 20:41:29