Project1

标题: 请教关于class << moudle的意思 [打印本页]

作者: tan12345    时间: 2015-3-16 22:27
标题: 请教关于class << moudle的意思
常常在大神们的脚本里看到先是moudle xx,然后在后面的脚本里来个class << xx,以前学的语言里没接触过这类语法,所以想问问,class << xx是什么意思?这样子有什么意义?既然有了class << xx,前面为何还定义成moudle呢,直接定义成class不好吗?
作者: 喵呜喵5    时间: 2015-3-16 22:42
本帖最后由 喵呜喵5 于 2015-3-17 13:14 编辑

涉及元编程相关,并没有必须搞懂的必要,直接记住然后使用就好了,
如果一定要弄明白的话,关键字: Ruby eigenclass 去搜索一下看看相关的文章吧。

具体的,请思考下面这段代码:

RUBY 代码复制
  1. class A
  2.   def hello
  3.     p 'hello'
  4.   end
  5. end
  6. a1 = A.new
  7. a2 = A.new
  8. def a2.hello  
  9.   super
  10.   p "world"
  11. end
  12.  
  13. a1.hello
  14. a2.hello


a2的 hello 方法存在于什么地方呢?
作者: tan12345    时间: 2015-3-16 23:02
喵呜喵5 发表于 2015-3-16 22:42
涉及元编程相关,并没有必须搞懂的必要,直接记住然后使用就好了,
如果一定要弄明白的话,关键字: Ruby e ...

看了你的例子,我觉得和继承有点类似,继承了这个方法,但是重写了这个方法??
可是你这个是实例的方法被改变了,只有这个实例被改变,那class << module呢?module下的所有方法全部被改变?只是为了方便module下的self.xx函数能用alias?
ps:1楼写错了,把module写成了moudle……
作者: taroxd    时间: 2015-3-17 12:34
本帖最后由 taroxd 于 2015-3-17 12:35 编辑
tan12345 发表于 2015-3-16 23:02
看了你的例子,我觉得和继承有点类似,继承了这个方法,但是重写了这个方法??
可是你这个是实例的方法 ...


没有搞懂的必要。想搞懂的话,推荐的参考书籍:Metaprogramming Ruby 2

另外,这个类的官方叫法是 singleton class,你可以找找相关资料
作者: tan12345    时间: 2015-3-17 21:59
taroxd 发表于 2015-3-17 12:34
没有搞懂的必要。想搞懂的话,推荐的参考书籍:Metaprogramming Ruby 2

另外,这个类的官方叫法是 singl ...

昨晚看了喵大的回复后已百度,解了一般惑,还有一般没解~不过既然2位大大都说没必要搞懂,好吧,将就了~
咦,论坛啥时候多了个此回复解决我的问题按钮这个功能了?太久没提问out了~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1