2017-08-24 75 views

回答

4

使用tap

p [1, 2].tap &.each { "foo" } # => [1, 2] 

它產生自我塊,然後返回自己。

另一種選擇(不推薦)可以創建簡單地做每一後返回自己的自定義方法:

class Array 
    def each_with_self 
    each { |x| yield x } 
    self 
    end 
end 

p [1, 2].each_with_self { "foo" } # => [1, 2] 
1

對於你所要求的情況下,它可能是足夠用括號中p(..)因爲p作爲結果返回參數。

p([1, 2]).each{ "foo" } 

p此行爲提供用於在表達式的中間做容易檢查,即改變foo(bar, baz)foo(p(bar), baz)

至於#each,晶振決定返回nil以改善生成的代碼,因爲該值大部分時間不使用。這也阻止了在一天結束時產生一些工會。