使用ruby'得到'在

时间:2015-09-19 11:12:40

标签: ruby gets

此代码应该按原样运行:

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

1 个答案:

答案 0 :(得分:2)

这两个脚本有两个不同的含义/结果。

在第一个中,您从输入中读取一个数字,然后存储它,然后将数组中的所有项目与该值进行比较。

在第二个脚本中,作为"从输入中读取"代码在块内,它将作为detect迭代的一部分执行。因此,系统会要求您输入一个值(相同的值?),与数组中的项目数一样多。

根据你的要求,第一个可能是正确的方法。