我有这段代码:
#test document for my pseudo code
userInput = "go"
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
while userInput != "exit"
arr.each do |first|
first.map! do |second|
if userInput.to_i == second
first[second] = "X"
end
print "|#{second}|"
end
print "\n"
end
puts "Type quit for exiting game, or a number"
userInput = gets.chomp
end
如果我运行此命令并输入数字,则会发生这种情况:
如果我改变了地图!将它映射起作用,但在下一次迭代中保存的" X"在数组中,因为map只返回一个新数组。我想用map更改现有值的值!但为什么它表现得那么奇怪?
答案 0 :(得分:0)
我解决了。
问题是map循环中的print语句。这返回nil并且它是最后一次返回,因此数组中的所有内容都设置为nil。
我通过将/MyCustomUsers/reset-password
放在print语句下面来解决它:
second
答案 1 :(得分:0)
map!
通过用块中的返回值替换每个元素来转换数组。块的返回值(通常)是块内计算的最后一个表达式的返回值。在您的情况下,块内评估的最后一个表达式是
print "|#{second}|"
返回nil
。换句话说:数组中的每个元素都会被nil
替换,因为这是您告诉map!
要执行的操作。