瞎扯淡 关于 Ruby 文档中 JSON 模块中方法的疑惑

liy_j · 2015年12月10日 · 最后由 qinfanpeng 回复于 2015年12月10日 · 1702 次阅读

http://ruby-doc.org”中看 JSON 模块文档时,JSON 可以响应 Public Class Methods 方法和 Public Instance Methods 方法,按道理说只能响应 Public Class Methods 方法才对啊? 难道是我看文档的姿势有误??? 还望各位前辈答疑解惑。

比如说:module 中类方法只有 module 自己才可以调用,而在模块中定义的实例方法,在包含模块的类的实例对象才可以调用;module 是不能响应自己的实例方法的。

module My
  def self.my_class_method
   end
  def my_instance_method
  end
end
p My.respond_to?(:my_class_method) #true
p My.respond_to?(:my_instance_method) #false

如下图中 红色圈为 Public Class Methods 方法,荧蓝色为 Public Instance Methods 方法,按说 module JSON 是不能响应 Public Instance Methods 方法的啊

看不懂你的描述,且连接也打不开。

#1 楼 @qinfanpeng 谢谢,已经修改了

json/common.rb里面对这些方法使用了关键字module_function

#3 楼 @raja 多谢了,经过你提醒明白了

内置方法 module_function 做了两件事:首先,把紧跟其后的方法都标注成了私有方法; 其次,让紧跟其后 的方法可以单例方式访问。

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