将块作为变量传递失败“ ArgumentError:缺少块”

时间:2019-04-23 04:52:35

标签: ruby

我有方法

8.8.8.8

这在第3行失败,并显示错误

  

ArgumentError:缺少块:用 def self.fetch(key, &block) begin Rails.cache.fetch(key, block) rescue Redis::CommandError => e raise unless e.message == "OOM command not allowed when used memory > 'maxmemory'." Utils.log_exception ex yield end end 调用Cache#fetch   需要一个块。

我不确定像这样传递参数是否是正确的方法,但是我看不到其他方法。

将包含块的变量传递给方法的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

参数列表中的&和号一元前缀运算符用于“展开” Proc的实例,就像它作为一个块传递给方法一样,就像{{1} }参数列表中的&符号用于将作为参数传递的块“汇总”到&的实例中:

Proc