1

我不确定为什么这个方法没有运行。

编译错误显示:

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

但是你可以清楚地看到,sequence5方法应该有 2 个参数,一个用于args散列,另一个用于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 回答