在块中使用 ruby 'gets'
use ruby 'gets' in block
这段代码可以正常工作:
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
?
两个脚本有两个不同meanings/results。
在第一个中,您从输入中读取一个数字,将其存储,然后将数组中的所有项目与该值进行比较。
相反,在第二个脚本中,由于 "read from input" 代码在块内,它将作为 detect
迭代的一部分执行。因此,您将被要求输入一个值(相同的值?)与数组中的项目数相同的次数。
根据你的要求,第一种应该是正确的做法。
这段代码可以正常工作:
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
?
两个脚本有两个不同meanings/results。
在第一个中,您从输入中读取一个数字,将其存储,然后将数组中的所有项目与该值进行比较。
相反,在第二个脚本中,由于 "read from input" 代码在块内,它将作为 detect
迭代的一部分执行。因此,您将被要求输入一个值(相同的值?)与数组中的项目数相同的次数。
根据你的要求,第一种应该是正确的做法。