我正在寻找一种方法来在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