0

是否有在 Ruby 中清空方法的最佳实践?

即在一个子类中,如果我想重写一个没有任何内容的方法,是否有除此之外的另一种语法:

class A
  def XX
    [..do something..]
  end
end

class B < A
  def XX
    # Do Nothing
  end
end

我想知道是否有类似的关键字...

class B < A
  void_method :XX
end

...因为它更便于代码维护。

4

2 回答 2

4

没有,而且实际上击键次数比

def XX; end

但是您可以轻松添加这样的方法

class A
  def self.void_method name
    define_method(name) {}
  end
end

或者显然,如果您要在更多地方使用它,您可以将它添加到对象中。

于 2013-03-21T09:43:16.860 回答
1

从您的问题中不清楚您想要什么。如果您希望它不返回任何方法错误,请执行以下操作:

class B < A
  undef_method :XX
end

如果您希望它返回nil,请执行以下操作:

class B < A
  def XX *args, &pr; end
end

如果您希望它返回接收器,请执行以下操作:

class B < A
  def XX *args, &pr; self end
end
于 2013-03-21T09:56:37.063 回答