我想遍历包含数字和字符串的数组。现在我用下面的代码来实现:对数组进行迭代 - 只修改整数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