0

渡す必要がある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(&block)

if block.call == 5
  block.call + 1

else

block.call + 3

end

end

私のエラー出力

adder は、デフォルト ブロックによって返される値に 1 を加算します。デフォルト ブロックによって返される値に 3 を加算します (FAILED - 1)

失敗:

1) 一部のばかげたブロック関数 adder は、デフォルト ブロックによって返される値に 3 を追加します 失敗/エラー: adder(3) do ArgumentError: 引数の数が間違っています (0 の場合は 1) # ./05_silly_blocks/silly_blocks.rb:5:inadder' # ./05_silly_blocks/silly_blocks_spec.rb:37:inブロック(3 レベル) in '

4

2 に答える 2

1

adder予期しないパラメーターを渡します。

adder(3) do
  5
end

adderパラメータをまったく受け取らないように が定義されている場合:

def adder(&block)

オプションのパラメータをadder定義に追加する必要があります

def adder(num=1, &block)
  block.call + num
end
于 2013-06-08T22:15:18.110 に答える
0
def adder(num = 1)
  yield + num
end
于 2016-03-15T10:37:46.630 に答える