此代码应该按原样运行:
puts "pick 1:"
num_1 = gets.chomp
array.detect { |k| k.id == num_1.to_i }
...
puts "pick n:"
num_n = gets.chomp
array.detect { |k| k.id == num_n.to_i }
我不会重复使用' num'其他地方的变量所以我不想将gets
分配给变量并在块中使用它,如下所示:
puts "Pick 1:"
array.detect { |k| k.id == gets.chomp.to_i }
在控制台中,它有时会起作用,但有时它并不适用。如果它没有我被困在函数中。
是非法使用还是以某种方式包裹gets
?
答案 0 :(得分:2)
这两个脚本有两个不同的含义/结果。
在第一个中,您从输入中读取一个数字,然后存储它,然后将数组中的所有项目与该值进行比较。
在第二个脚本中,作为"从输入中读取"代码在块内,它将作为detect
迭代的一部分执行。因此,系统会要求您输入一个值(相同的值?),与数组中的项目数一样多。
根据你的要求,第一个可能是正确的方法。