我正在尋找一種方法來在Ruby中映射單個項目。單個對象的Ruby映射()
我想調用這個函數並將它傳遞給一個塊,該對象將被放到塊中,然後塊的結果將返回給調用者。到底是什麼地圖,但只是一個單一的元素。
的動機是,有時你會生成只用於構造別的東西的對象。原來的對象不再需要。將轉換放到一個塊中並消除臨時值將會很好。
作爲一個人爲的例子,我們假設我想創建一個代表月份/年份組合的整數。對於今天的日期,代碼看起來是這樣的:
day = Date.today
month_number = day.year * 100 + day.month
我真的很喜歡它,如果我可以這樣做:
month_number = Date.today.some_function { |d| d.year * 100 + d.month }
但我不知道什麼是「some_function」是(或者它甚至存在)。
如果有更多的Ruby方式來處理這樣的事情,我全都耳熟能詳。我知道猴子補丁類,但我正在尋找處理那些更短暫的情況。
['對象#tap'](http://ruby-doc.org/core-1.9.3/Object.html#method-i-tap)是如此接近,但它不」 t返回塊的值... – maerics 2013-02-08 20:30:31
有點像? m = lambda {| d | d.year * 100 + d.month} .call(Date.today) – Kaeros 2013-02-08 20:30:53
請參閱@jondavidjohn的答案。內置且無需proc綁定開銷。 – 2013-02-08 20:42:47