如何從Ruby塊中訪問數組?從Ruby枚舉器塊訪問數組值
例如:
[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }
凡THEWHOLEARRAY
應該返回[1,2,3]
。
如何從Ruby塊中訪問數組?從Ruby枚舉器塊訪問數組值
例如:
[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }
凡THEWHOLEARRAY
應該返回[1,2,3]
。
你所追求的是無論是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
你不能。塊變量僅保存每次迭代的單個元素的信息。它沒有整個數組的信息。此外,each
將迭代次數與數組中元素的數量一樣多。你想多次檢查嗎?它沒有任何意義。
實際上,任務是選擇與其他數組元素相似的元素,如果沒有「相似」元素,則返回元素。 Like: { {title:'h1',value:'ttt'}, {title:'h2',value:'h2'}, {title:'h1',category:5,value: '需要退回,而不是第一個} ]' 有什麼更好的方法來做到這一點? –
這並不完全清楚你想要做什麼。你的意思是這樣嗎?:
THEWHOLEARRAY = [1,2,3]
THEWHOLEAREAY.each{ |e|
puts THEWHOLEARRAY.inspect
}
Ruby允許你訪問塊外的變量。通常它會是另一個變量,而不是你正在迭代的那個變量。
令人驚歎的是,在白天我看到這個「tap」有好幾次,並想了解更多:-) –
* + 1 * ...很好的答案... –
@IlyaNovojilov:函數式編程和'點擊是時下的新時尚。 –