首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

Ruby之self详解(2)_以及双冒号语法

2012-10-08 
Ruby之self详解(二)_以及双冒号语法?请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/blog/11

Ruby之self详解(二)_以及双冒号语法

?

请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/blog/1108639

另外,如果有时间看看rails高级编程,会有更深入的理解,这本书讲的还是满深入的。

?

熟悉一个例子

class C  def m_c    puts __method__  endendmodule A  module B    class C      def m_a_b_c        puts __method__      end    end    class D < C    end    class E < ::C    end    puts C    puts ::C    puts self    puts self::C  endend
?输出:A::B::CCA::BA::B::Cm_c解释:这种双冒号开头语法本质上是去除了默认的作用域slef的限制,使得双冒号开头解释为self==Object,也就是说,::C==Object::C但没有::开头的类C表示self::C(为什么呢,看其所在的作用域)这样就可以解决到底extends哪个模块的问题了(例子中继承了哪个C)为啥不写为Object::C呢:? 原因1:简单,至少少敲了5次键,这也很符合perl的逻辑,嘿嘿;? 原因2:以后扩展方便么,万一Object也有顶层类等变化呢,待讨论咯,反正我这么觉得,你看ruby1.9已经这么干了

OKOKOK## ruby语言是我用过的最舒服的语言!OKOKOK

?

1 楼 tedeyang 2012-05-20   很好的解释。我是为双冒号来的。不得不说ruby隐晦的地方很多啊。 2 楼 tedeyang 2012-05-20   请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/admin/blogs/1108639
这个url错了,除了admin,其他人无法访问。

另外,最后一段代码为什么会多输出一行 “m_c”? 3 楼 fantaxy025025 2012-05-20   tedeyang 写道请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/admin/blogs/1108639
这个url错了,除了admin,其他人无法访问。

另外,最后一段代码为什么会多输出一行 “m_c”?

url改了,thanks!
最后一行的,我也忘记了,多半是调试别的程序,粘贴多了~

热点排行