我正在進行rspec測試通過。這些都是測試:塊只有在第二個參數
describe "adder" do
it "adds one to the value returned by the default block" do
adder do
5
end.should == 6
end
it "adds 3 to the value returned by the default block" do
adder(3) do
5
end.should == 8
end
end
這通過測試:
def adder(n=1,&block)
yield + n
end
雖然這並不:
def adder(&block,n=1)
yield + n
end
它只能如果我通過了塊作爲第二個參數。爲什麼是這樣?這是否總是如此,或者僅僅是爲了這個特殊情況?
因爲它的方式紅寶石的作品。您可以將lambdas作爲參數傳遞到您想要的位置 – apneadiving 2015-01-21 09:07:22
太棒了!所以這是一個規則。好吧,所以塊只能作爲最後一個參數傳遞,或者什麼是我無法在任何地方找到它的確切形式規則。 – vike272727 2015-01-21 09:17:02
第二個版本對我來說是一個語法錯誤(ruby 2.2) – 2015-01-21 09:40:29