我可以有一個數組,它的值爲nil
,例如[1, 3, nil, 23]
。在Ruby中添加nil對象作爲數組的元素
我有一個數組,我分配nil
像這樣array = nil
,然後我想遍歷它,但我不能。 .each
方法失敗,說nil
類。
可以做到這一點嗎?
我可以有一個數組,它的值爲nil
,例如[1, 3, nil, 23]
。在Ruby中添加nil對象作爲數組的元素
我有一個數組,我分配nil
像這樣array = nil
,然後我想遍歷它,但我不能。 .each
方法失敗,說nil
類。
可以做到這一點嗎?
用途:
a = [nil]
例子:
> a = nil => nil > a.each{|x|puts x} NoMethodError: undefined method `each' for nil:NilClass from (irb):3 from :0 > a= [nil] => [nil] > a.each{|x|puts x} nil => [nil]
我相信你的問題就在於,當你 「指定無」 到數組
arr = []
arr = nil
這是不是喜歡你試過嗎?在這種情況下,你不分配nil
給數組分配nil
給變量arr
,因此arr
現在nil
給你關於「無級」
使用可枚舉#地圖
ruby-1.8.7-p249 > [1,2,nil,4].map{|item| puts item}
1
2
nil
4
=> [nil, nil, nil, nil]
注意到的錯誤,即使數組中的每個項的返回值都是零,原始數組也是如此。如果您對數組中的每個項目執行操作,它將返回每個操作的值。你可以擺脫nils購買壓縮它。
ruby-1.8.7-p249 > [1,2,nil,4].map{|item| item + 1 unless item.nil? }
=> [2, 3, nil, 5]
ruby-1.8.7-p249 > [1,2,nil,4].map{|item| item + 1 unless item.nil? }.compact
=> [2, 3, 5]
我覺得你很困惑,將一個項目添加到一個數組中,並將一個值賦給一個變量爲零。
添加一個項目(結束)的陣列(雙向):
array.push(item)
# or if you prefer
array << item
# works great with nil, too
array << nil
我假設數組已經存在。如果沒有,您可以使用array = []
或array = Array.new
來創建它。
另一方面,array = nil
將nil
分配給恰好(誤導性地)被命名爲'數組'的變量。如果該變量先前指向一個數組,則該連接現在被破壞。
您可能會想到索引位置的轉讓,但array[4] = nil
與array = nil
有很大不同。
當然可以。您可能試圖對nil
對象執行某些操作,而無需先檢查它是否爲nil?
。
C:\work>irb
irb(main):001:0> a = [1,2,nil,3]
=> [1, 2, nil, 3]
irb(main):003:0> a.each{|i|
irb(main):004:1* if i.nil? then
irb(main):005:2* puts ">NADA>"
irb(main):006:2> else
irb(main):007:2* puts i
irb(main):008:2> end
irb(main):009:1> }
1
2
>NADA>
3
=> [1, 2, nil, 3]
irb(main):010:0>
是的,你是正確的我分配零變量arr .... – user384070 2010-08-12 21:24:57