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

时间:2016-01-29 10:10:04

标签: ruby

看起来很简单。试图编写一个具有默认参数的简单代码。这会引发名称错误和方法错误的错误。代码应该能够接受任何参数并打印arg,如果不是arg给出print“meat”。 有什么帮助,为什么它的抛出错误?

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

Failures:

1)#meal_choice应该默认为肉      失败/错误:期待(meal_choice).to eq(“meat”)

 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)#meal_choice应该允许你订餐      失败/错误:期待(meal_choice(“素食主义者”))。到eq(“素食主义者”)

 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/meal_choice_spec.rb:2##meal_choice应该默认为肉 rspec ./spec/meal_choice_spec.rb:6##meal_choice应该允许你订餐

2 个答案:

答案 0 :(得分:2)

这是一个有效的代码:

[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

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

答案 1 :(得分:1)

您需要使该方法在没有放置的情况下起作用:

def meal_choice (meal = "meat")  
    meal  
end