小编pad*_*dyB的帖子

为什么传递方法作为参数(&block)不起作用?

clock 采取一个块:

def clock(&block)
  hours = Time.new.hour
  puts hours
  hours.times do
    block.call
  end
end
Run Code Online (Sandbox Code Playgroud)

这可以工作,并"DONG"根据今天的小时数放在屏幕上:

clock do
  puts "DONG..."
end
Run Code Online (Sandbox Code Playgroud)

我正在尝试传递dong方法:

def dong
  puts "DONG..."
end
Run Code Online (Sandbox Code Playgroud)

clock作为其块.这个:

clock(dong)
Run Code Online (Sandbox Code Playgroud)

抛出错误:

`clock': wrong number of arguments (1 for 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么第一个有效,但第二个没有?您是否必须明确定义要传递的代码块,还是可以将另一个方法作为代码块引用?

ruby proc

1
推荐指数
1
解决办法
86
查看次数

标签 统计

proc ×1

ruby ×1