我正在使用终端并以如下方式在ruby文件hello_world.rb上分配多个变量:
$ ruby hello_world.rb arg1 arg2 arg3 arg4
如果我把
$ ruby hello_world.rb hello world mars jupiter
我需要它来显示
hello world
hello mars
hello jupiter
如果我把
$ ruby hello_World.rb whaddup boy girl
需要显示
whaddup boy
whaddup girl
第一个参数将是第一个字符串,其余参数将分别列为第二个字符串。
我能够创建代码:
def hello_world(first, *second)
second.each do |arg|
puts "#{first} #{arg}"
end
end
但是当我从终端运行$ ruby hello_world.rb hello world mars
时,它不会显示任何内容。我想我必须使用ARGV。我知道如何处理一个论点,
def hello_world
ARGV.each do |arg|
puts "Hello #{arg}"
end
end
hello_world
终端:
$ ruby hello_world.rb world mars jupiter
#=> Hello world
#=> Hello mars
#=> Hello jupiter
我不知道在两个或更多参数的情况下如何做到这一点。任何帮助都感激不尽。谢谢!
答案 0 :(得分:3)
ARGV
常量只是一个数组,因此您可以执行以下操作,例如:
def hello_world
first = ARGV.shift
puts ARGV.map { |arg| "#{first} #{arg}" }
end
hello_world
方法Array#shift
将删除并返回数组的第一个元素。在这种情况下,第一个参数从命令行传递。
输出:
$ ruby hello_world.rb hello world mars
#=> hello world
#=> hello mars
答案 1 :(得分:0)
您需要做的就是使用您的第一个hello_world
方法,但是使用ARGV的元素调用它,而不是ARGV本身,使用splat:
def hello_world(first, *second)
second.each do |arg|
puts "#{first} #{arg}"
end
end
hello_world *ARGV
# ..........^