可能重複:
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);'。 –