查看: 2136|回复: 4

[已经解决] 请教关于class << moudle的意思

[复制链接]
梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2015-3-16 22:27:02 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
常常在大神们的脚本里看到先是moudle xx,然后在后面的脚本里来个class << xx,以前学的语言里没接触过这类语法,所以想问问,class << xx是什么意思?这样子有什么意义?既然有了class << xx,前面为何还定义成moudle呢,直接定义成class不好吗?

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-3-16 22:42:52 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-3-17 13:14 编辑

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

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

[pre lang="ruby"]class A
  def hello
    p 'hello'
  end
end
a1 = A.new
a2 = A.new
def a2.hello  
  super
  p "world"
end

a1.hello
a2.hello[/pre]

a2的 hello 方法存在于什么地方呢?

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
 楼主| 发表于 2015-3-16 23:02:39 | 显示全部楼层
喵呜喵5 发表于 2015-3-16 22:42
涉及元编程相关,并没有必须搞懂的必要,直接记住然后使用就好了,
如果一定要弄明白的话,关键字: Ruby e ...

看了你的例子,我觉得和继承有点类似,继承了这个方法,但是重写了这个方法??
可是你这个是实例的方法被改变了,只有这个实例被改变,那class << module呢?module下的所有方法全部被改变?只是为了方便module下的self.xx函数能用alias?
ps:1楼写错了,把module写成了moudle……

点评

所以都说了关键字: Ruby eigenclass 自己先去搜索一下啊…………= =  发表于 2015-3-16 23:06
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-3-17 12:34:28 来自手机 | 显示全部楼层
本帖最后由 taroxd 于 2015-3-17 12:35 编辑
tan12345 发表于 2015-3-16 23:02
看了你的例子,我觉得和继承有点类似,继承了这个方法,但是重写了这个方法??
可是你这个是实例的方法 ...


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

另外,这个类的官方叫法是 singleton class,你可以找找相关资料
回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
 楼主| 发表于 2015-3-17 21:59:59 | 显示全部楼层
taroxd 发表于 2015-3-17 12:34
没有搞懂的必要。想搞懂的话,推荐的参考书籍:Metaprogramming Ruby 2

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

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

点评

今天刚有的  发表于 2015-3-17 22:07
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部