Ruby 请教个 Ruby 的基础问题

lululau · 2012年04月20日 · 最后由 zw963 回复于 2012年04月23日 · 2304 次阅读

方法“attr_accessor”和“module_function”同样都是类"Module"的实例方法,但是为什么“attr_accessor”可以在定义类的时候这样用:

class Hello
  attr_accessor :hello
end


而“module_function”却不可以这样用呢:

class Hello
  def hello
  end

  module_function :hello
end


我觉得唯一合理的解释就是类“Class”在继承类“Module”的时候,把方法“module_function”给删除了?

共收到 3 条回复

Class是把module_function给undef掉了。

#1楼 @skandhas 谢谢,知道了还有undef_method这种东西

没看过源代码. 不过猜测就是skandhas说的那样. 正如其名, 这个方法只是在模块类中被使用才有意义

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册