【发布时间】:2015-03-13 02:15:57
【问题描述】:
我有一个带有子类的基类,这些子类覆盖了一个采用多个参数的方法。
class Parent
def foo *bar
end
end
class Child < Parent
def foo bar, baz
end
end
这很好用。但是,假设 Parent 中有一个方法 foobar 调用 foo:
def foobar *foo_args
foo foo_args
end
这在 Child 实例上调用时会引发 ArgumentError,因为 foo_args 是一个单独的数组,而 Child.new.foo 需要两个对象。有没有办法解决这个问题?
【问题讨论】:
-
我无法重现这个。您的代码在 Ruby 2.1 和 1.8.7 中对我来说很好。据我所知,您对父母和孩子之间必须匹配的方法签名是错误的。 Ruby 中没有这样的要求。这工作正常:pastebin.com/g5VgzKPX
-
完全正确 - 在 Ruby 中,这只是运行时消息调度的问题。
-
完全不清楚您要做什么。
-
正确,我对签名有误。但是,从父级调用该方法仍然是一个问题。我将编辑问题以澄清。
标签: ruby overriding splat