我正在进行一项练习,以便通过以下测试:
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(z)
return z + " " + z
end
测试的第一部分通过,但第二部分失败。
然后当我尝试这个时:
def repeat(z, 2)
return z * 2
end
我退出测试/耙时出错。
然后当我尝试:
f = 2
def repeat(z, f)
return z * f
end
测试没有通过,我收到了这条消息:
wrong number of arguments (1 for 2)
我不知道这里发生了什么,有人能解释一下这是怎么回事吗?
答案 0 :(得分:3)
您可以定义如下函数:
def repeat(z, y=2)
return z * y
end
现在,repeat("hello")
会产生:hellohello
而repeat("hello", 3)
将返回hellohellohello
答案 1 :(得分:2)
看来你正在做Simon说的练习。
本练习的目的是教你如何使用默认值获取一个或多个参数。
每当使用" x =默认值"分配默认值时,将使用它。如果使用不同的值调用该方法,则将使用它。
在下面的示例中,number的默认值为2.
def repeat(word, number = 2)
([word] * number).join(" ")
end
使用上面的内容,我们可以调用repeat(" Hello",3),这将导致"你好你好你好"
如果我们调用repeat(" Hello"),默认情况下它将返回" hello hello"
希望这有帮助!!!