1

このメソッドが実行されていない理由がわかりません。

コンパイルエラーは次のとおりです。

sequence5.rb:1:in `sequence5': wrong number of arguments (2 for 1) (ArgumentError) from sequence5.rb:11:in `<main>'

しかし、はっきりとわかるように、sequence5メソッドは 2 つの引数を取る必要があります。1 つはargsハッシュ用、もう 1 つはbproc 用です。

実行しようとしているコードはこちらです。

def sequence5(args, &b)
  n, m, c = args[:n], args[:m], args[:c]
  i = 0
  while i < n
    b.call(i*m+c)
    i += 1
  end
end

p = Proc.new {|x| puts x}
sequence5({:n=>3, :m=>4, :c=>0}, p)
4

1 に答える 1

3
sequence5({:n=>3, :m=>4, :c=>0}, &p)

p は引数ではなくブロックであり、Ruby ではブロックを渡すための構文が異なります

于 2012-05-10T20:35:31.433 に答える