演示默认参数的简单ruby代码抛出名称/方法错误

演示默认参数的简单ruby代码抛出名称/方法错误,ruby,Ruby,看起来很简单。尝试编写具有默认参数的简单代码。这会引发一个包含名称错误和方法错误的错误。代码应该能够接受任何参数并打印arg,如果不是arg,则打印它。 有什么帮助吗?为什么会有投掷错误 def meal_choice( meal = "meat") puts "#{meal}" end Failures: 1膳食选择应默认为肉类 失败/错误:ExpectMein\u choice.to eqmeat NameError: undefined local variable or m

看起来很简单。尝试编写具有默认参数的简单代码。这会引发一个包含名称错误和方法错误的错误。代码应该能够接受任何参数并打印arg,如果不是arg,则打印它。 有什么帮助吗?为什么会有投掷错误

def meal_choice( meal = "meat")
 puts "#{meal}"
end

Failures:
1膳食选择应默认为肉类 失败/错误:ExpectMein\u choice.to eqmeat

 NameError:
   undefined local variable or method `meal_choice' for #<RSpec::ExampleGroups::MealChoice:0x007fb4ec159188>
 # ./spec/meal_choice_spec.rb:3:in `block (2 levels) in <top (required)>'
2餐的选择应该允许你安排一顿饭 失败/错误:ExpectMein_choicevegan.to eqvegan

 NoMethodError:
   undefined method `meal_choice' for #<RSpec::ExampleGroups::MealChoice:0x007fb4ec14b0d8>
 # ./spec/meal_choice_spec.rb:7:in `block (2 levels) in <top (required)>'
完成时间为0.00125秒文件加载时间为0.12294秒 2例,2次失败

失败的示例:

rspec./spec/fine\u choice\u spec.rb:2 fine\u choice应默认为肉类 rspec./spec/fine\u choice\u spec.rb:6 fine\u choice应该允许您设置一顿饭

这是一个工作代码:

[1] pry(main)> def meal_choice( meal = "meat")
[1] pry(main)*   puts "#{meal}" 
[1] pry(main)* end  
#=> :meal_choice
[2] pry(main)> meal_choice
#=> meat
#=> nil
[3] pry(main)> meal_choice(:sdgsdg)
#=> sdgsdg
#=> nil

您必须在方法调用中输入错误或错误地调用了方法。

您需要使该方法在没有puts的情况下完成工作:


你能提供调用该方法的代码吗?嘿,sschmeck,请看上面的代码^Yep,在操作系统X上的Ruby 2.2.3中为我工作。@MustafaHill:sschmeck要求更多的上下文,而且这样做是正确的,依我看,没有足够的显示,你的方法也没有问题。请显示出现相同错误的示例代码,即如何调用该方法。还显示完整的错误消息,不要只是说抛出错误并让我们猜测-将错误消息粘贴到此处。感谢Neil Slater的反馈我在上面添加了测试套件中的错误是的,这一定是错误。put返回nil,因此该方法返回nil。
def meal_choice (meal = "meat")  
    meal  
end