我想遍歷包含數字和字符串的數組。現在我用下面的代碼來實現:對數組進行迭代 - 只修改整數Ruby
def mod_method(source_array, integer_increase)
source_array.map! do |x|
if x.is_a? Fixnum
x+=integer_increase
else
x
end
end
p source
end
因此,這將遍歷所有的整數,第二個參數(整數)添加到所有的值。我不明白的是,我是這樣做的:
def mod_method(source_array, integer_increase)
source_array.map! do |x|
if x.is_a? Fixnum
x+=integer_increase
end
end
p source
end
它會返回所有非整數作爲NIL。我所做的就是擺脫'其他x'。難道它不會跳過那些不是Fixnum類型的元素嗎?爲什麼它將這些值設置爲零?我認爲,如果我能弄清楚,我將能夠重構代碼,使其看起來更好。謝謝。
'map!'用指定塊的返回值替換數組中的每個值。丟棄'else',爲非整數元素返回'nil' – 2014-08-29 20:03:19
您需要提供樣本輸入數據,並顯示所需輸出的示例。 – 2014-08-29 20:10:15
使用'else'完全可以接受。 'map'需要看到塊的每次迭代都返回的東西,否則它使用'nil',又叫'我什麼也沒有'。 – 2014-08-29 20:14:08