ruby-on-rails - 有没有办法在rails控制台中修改数组类?
问题描述
是否可以从 Rails 控制台猴子修补数组类?当我尝试运行以下代码时,我收到此错误。
class Array
def push(obj)
return
end
end
我收到以下错误
ArgumentError: wrong number of arguments (given 5, expected 1)
from (pry):2:in `push'
解决方案
看起来 Rails 控制台本身中的某些东西正在使用Array#push
并且一旦你定义了它就会使用你的猴子补丁版本。
的标准版本push
被定义为接受传递给它的尽可能多的参数,但是您的替换版本只接受一个参数,obj
因此不兼容。
这会导致wrong number of arguments (given 5, expected 1)
您提到的错误。
要替换push
为兼容版本,您可以使用 Ruby 的*
(“splat”运算符)定义一个可以接受任意数量参数的方法:
def push(*obj)
# implementation here
end
用一个只返回而不做任何事情的方法替换push
可能会导致很多问题。也许用更多关于你想要做什么的细节来更新这个问题。
推荐阅读
- react-native - 如何将 react-native 应用程序用作本机 android 或 IOS 中的 .aar 文件之类的库
- sql - 为用户在业务对象屏幕中输入的输入分配 PLSQL 中的行号
- windows - 复制文件夹中的文件,不包括 Windows 中的 .txt 文件中的一些文件
- android - 如何在相同的 LinearLayout 中使高度以在顶视图上投影阴影
- spring-boot - Spring Boot 配置——keycloak
- excel - 如何在有时存在默认选定值的情况下初始化用户表单列表框
- clipboard - 可以点头将类型(OleSter)的变体转换为类型(货币)
- wordpress - WP-Members / 如何更新单选按钮值?
- python - 使用熊猫数据框创建具有相反顺序的新列
- c++ - 将 ffmpeg 库与 Qt 框架一起使用会导致错误