调用带有命令行参数的方法时出错

时间:2019-04-16 17:32:51

标签: ruby

我想将命令行参数传递给程序,然后在我正在调用但已收到undefined local variable or method error player_name的方法中引用该参数。

我是Ruby的新手,所以这可能是一个基本问题,但是我尝试了解如何正确使用ARGV。 是否不可能在方法中使用用户提供的输入作为命令行参数,然后再调用此方法?我想念什么?

player_name = ARGV.first

def start
    puts "Hey #{player_name}, do you want to go left or right?"
    print "> "
end

start

2 个答案:

答案 0 :(得分:1)

您对ARGV的使用是正确的。 player_name方法中没有简单定义start。如果您想让方法传递给变量

def start(player_name)
  puts "Hey #{player_name}, do you want to go left or right?"
  print "> "
end

first_argument = ARGV.first
start(first_argument)

注意:我更改了变量名称并移动了一行以向您显示它们不是相同的变量。您正在传递它。我想现在更清楚了

答案 1 :(得分:0)

除了先前的答案外,Ruby中的变量范围的这种解释:https://www.natashatherobot.com/ruby-variable-scope/