Ruby:define的默认值?

时间:2013-11-25 01:16:08

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个关于定义我的主要问题的问题是我对参数的工作原理有点困惑。

这是我的方法

 def repeat(repeated_word)
    @repeated_word = repeated_word
    "#@repeated_word #@repeated_word"
    end

这是我的rspec测试,以确保我的方法有效。

 describe "repeat" do
    it "should repeat" do
      repeat("hello").should == "hello hello"
    end

    # Wait a second! How can you make the "repeat" method
    # take one *or* two arguments?
    #
    # Hint: *default values*
    it "should repeat a number of times" do
      repeat("hello", 3).should == "hello hello hello"
    end
   end

它通过了第一次测试,但第二次测试失败了。我的困惑是如果我添加第二个参数意味着def重复(repeat_word,times_repeated) 然后第一个测试失败,因为它的参数数量错误。不确定如何设置默认值?

1 个答案:

答案 0 :(得分:1)

def repeat(repeated_word, repeats=2)
  repeats.times.map { repeated_word }.join(' ')
end