具有散列和proc参数未运行的方法

时间:2012-05-10 20:32:52

标签: ruby ruby-1.9

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

编译错误如下:

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

但是你可以清楚地看到,sequence5方法应该有2个参数,一个用于args哈希,另一个用于b proc。

我正在尝试运行的代码就在这里。

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)

1 个答案:

答案 0 :(得分:3)

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

p不是一个参数,它是一个块,Ruby有不同的语法来传递一个块