我有一个小程序
puts "enter segments: "
entry = gets.chomp.split
entry.each do |value|
@new_values = []
if value == "0"
value = 2
@new_values << value
elsif value == "1"
value = 3
@new_values << value
elsif value == "2"
value = 1
@new_values << value
elsif value == "3"
value = 2
@new_values << value
elsif value == "4"
value = 3
@new_values << value
elsif value == "5"
value = 2
@new_values << value
elsif value == "6"
value = 3
@new_values << value
elsif value == "7"
value = 3
@new_values << value
end
end
print @new_values
此程序接受用户输入,将其拆分为空格,然后运行并指定一个整数值来替换当前字符串。
我遇到的问题是,每次数组的新元素通过时,value = variable
都会被覆盖。如何设置它以便重新分配所有值并将其输入@new_values
数组?
答案 0 :(得分:4)
正如@MladenJablanović建议的那样,你需要将@new_values = []
移到你的循环之外。
@new_values = []
entry.each do |value|
...
答案 1 :(得分:3)
我知道那里已经有了一个已经接受的答案,但是如果对你的大块if else块进行一点点清理呢?
puts "enter segments: "
entry = gets.chomp.split
@dict = [2,3,1,2,3,2,3,3]
new_values = entry.map do |value|
@dict[value.to_i]
end
print new_values