Rubocop给了我以下攻击
lib/daru/vector.rb:1182:5: C: Style/MethodMissing: When using method_missing, define respond_to_missing? and fall back on super.
def method_missing(name, *args, &block) ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
缺少的方法定义为:
def method_missing(name, *args, &block)
if name =~ /(.+)\=/
self[$1.to_sym] = args[0]
elsif has_index?(name)
self[name]
else
super(name, *args, &block)
end
end
我尝试使用以下代码修复它,并查看here
中的示例def respond_to_missing?(method_name, include_private=false)
(name =~ /(.+)\=/) || has_index?(name) || super
end
但是现在Rubocop给了我以下的进攻:
lib/daru/vector.rb:1182:5: C: Style/MethodMissing: When using method_missing, fall back on super.
def method_missing(name, *args, &block) ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我似乎无法弄清楚错误是什么。正如你所看到的那样,我会在其他区块中重返超级。
答案 0 :(得分:6)
Rubocop希望在没有参数的情况下调用super
。由于您传递给super
的参数与您收到的参数相同,您只需删除参数:
def method_missing(name, *args, &block)
if name =~ /(.+)\=/
self[$1.to_sym] = args[0]
elsif has_index?(name)
self[name]
else
super
end
end
答案 1 :(得分:0)
也许您应该改为尝试def respond_to_missing?(name, include_private=false)
?