ruby - 将块作为变量传递失败“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
这在第 3 行失败并出现错误
ArgumentError: Missing block: 调用
Cache#fetch
withforce: true
需要一个块。
我不确定将块作为这样的参数传入是否是正确的方法,但我看不到另一种方法。
将包含块的变量传递给方法的正确方法是什么?
解决方案
参数列表中的&
&符号一元前缀运算符用于“展开”实例,Proc
就好像它作为块传递给方法一样,就像&
参数列表中的&符号用于“展开”传递的块一样一个实例的参数Proc
:
Rails.cache.fetch(key, &block)
# ↑
推荐阅读
- python-3.x - Cx_Oracle 抓取崩溃
- jquery - jquery ui 布局插件改变调整大小切换的方向 angularjs
- mysql - MySQL:通过字符串比较更新具有来自其他表的 id 的表列
- xml - 如何在 Spring Batch 作业中的多个步骤(每个步骤包含不同的 itemreader)中重用相同的 itemprocessor
- sql-server - 用符号处理 sql 字符顺序
- python - 是否可以从 matplotlib 的刻度下方某处绘制箭头
- javascript - 如何更新数组中的地图对象?
- swift - 使用数组存储颜色(字符串)来设置标签元素的 UIColor
- laravel - ERR_CONNECTION_REFUSED 通过浏览器访问流浪客
- c# - Unity放大时如何使rts相机平滑