2013-06-23 46 views

回答

1

你所追求的是無論是tap,已經實現:

[1, 2, 3].tap { |ary| 
    puts ary.inspect 
    ary.each { |e| 
    # ... 
    } 
    'hello' ' ' + 'world' # return value demo 
} # returns the original array 

或者ergo方法,即將推出:

class Object; def ergo; yield self end end # gotta define it manually as of Ruby 2.0.0 
[1, 2, 3].ergo { |ary| 
    puts ary.inspect 
    ary.each { |e| 
    # ... 
    } 
    'hello' ' ' + 'world' # return value demo 
} # returns the block return value 
+0

令人驚歎的是,在白天我看到這個「tap」有好幾次,並想了解更多:-) –

+0

* + 1 * ...很好的答案... –

+0

@IlyaNovojilov:函數式編程和'點擊是時下的新時尚。 –

0

你不能。塊變量僅保存每次迭代的單個元素的信息。它沒有整個數組的信息。此外,each將迭代次數與數組中元素的數量一樣多。你想多次檢查嗎?它沒有任何意義。

+1

實際上,任務是選擇與其他數組元素相似的元素,如果沒有「相似」元素,則返回元素。 Like: { {title:'h1',value:'ttt'}, {title:'h2',value:'h2'}, {title:'h1',category:5,value: '需要退回,而不是第一個} ]' 有什麼更好的方法來做到這一點? –

1

這並不完全清楚你想要做什麼。你的意思是這樣嗎?:

THEWHOLEARRAY = [1,2,3] 
THEWHOLEAREAY.each{ |e| 
    puts THEWHOLEARRAY.inspect 
} 

Ruby允許你訪問塊外的變量。通常它會是另一個變量,而不是你正在迭代的那個變量。