我简化了以下代码的问题:
def self.foo()
array = [0,3,5,10,4,6,9,7]
array.each do |arrayelement|
name = "Ruts" if arrayelement == 5
puts name
end
end
当数组中的某个元素等于常量时,应在变量中写入一个字符串。数组中的每个元素都是唯一的。问题在于,当arrayelement = 5时,它会将“ Ruts”写入变量名,但是在每个循环的下一次迭代中,它将nil覆盖它。这是该方法的输出。
nil
nil
Ruts
nil
nil
nil
nil
nil
我如何更改代码,以便在下一次迭代中将变量名= Ruts而不是nil?
这是因为变量name
是块的局部变量,并且每次都会被定义。只需在外面声明即可。
name = nil
array.each do |arrayelement|
name = "Ruts" if arrayelement == 5
puts name
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句