###我现在这个脚本是结合 gets.chomp
和 ARGV
一起使用 (《笨办法学 ruby》13 节),我想在输入参数的时候,参数顺序可以任意改变,然后在后面用一个 hash+get.chomp 结合,将每一个参数赋值给正确的地方,但是 gets 部分出错,想请问一下是什么原因,如何修改。
AGRV = 19,180,"GUOHAO","hello","60"
ab={1 => "name", 2 => "age", 3 => "height" ,4 => "weight", 5 => "your words"}
puts ab #告诉用户每个序号对应什么
a=0
ARGV.each do |i|
a += 1
print "请输入第#{a}个参数对应的序号"
m=gets.chomp() #应该是这里出错
ab[m]=i #此处可能出错
end
puts "#{ab[5]}" #从此处开始,实际上是把每一个参数放到puts里打印出来
puts "My name is #{ab[1]}"
puts "I'm #{ab[2]}years old, #{ab[3]} tall and #{ab[4]} heavy."
####我之前把 gets.chomp()和 ab[m]=i 这两行换成了 puts i 就可以正常运行,所以能判断出前后都没有问题没有问题
这是我运行时出错:
$ ruby ex13-2.rb 19 180cm 60kg hello myname
{1=>"name", 2=>"age", 3=>"height", 4=>"weight", 5=>"your words"}
请输入第1个参数对应的序号Traceback (most recent call last):
4: from ex13-2.rb:5:in `<main>'
3: from ex13-2.rb:5:in `each'
2: from ex13-2.rb:8:in `block in <main>'
1: from ex13-2.rb:8:in `gets'
ex13-2.rb:8:in `gets': No such file or directory @ rb_sysopen - 19 (Errno::ENOENT)