可能重复:
Is there a `pipe` equivalent in ruby?红宝石方法链 - `tap`与更换
我在红宝石看tap
方法 - 可惜对象从传递块返回不会传递。我用什么方法让对象传递?
这里就是我想要(失败)做:
obj.tap{ |o| first_transform(o) }.tap{ |o| second_transform(o)}
这是当然,相当于second_transform(first_transform(o))
的。我只是问如何以第一种方式做到这一点。
这样做是琐碎的列表:
list.map{ |item| first_transform(item) }.map{ |item| second_transform(item)}
为什么不是与对象上一样容易?
为什么不成功?怎么了? –
'tap'忽略/放弃从'first_transform'和'second_transform'方法返回的值。它的目的是在链条内部观察物体,而不是参与链条本身。这只有在'transform'方法改变对象本身时才起作用。 –
“当然,这相当于'second_transform(first_transform(o))'”。不,它不等于'first_transform(o); second_transform(O);'。 –