关于ruby的new方法的一点思考
来源:互联网 发布:2016年度网络十大歌曲 编辑:程序博客网 时间:2024/05/29 04:36
对象方法的查找走向为:eigenclass -> MyClass -> Module -> Object(superclass) -> Kernel -> method_missing
类方法的查找走向为:eigenclass-> Class -> Module -> Object
Class中有两个new方法,一个为类方法Class.new,一个为实例方法new。
- Class.new
下面是ruby语言参考里的一段话:
新生成一个无名的superclass的子类. 若省略superclass则生成Object
的子类.
首次访问无名类的类名时, 将会搜索已赋值的常数名,然后把找到的常数名当做类名.
这样,我们就可以用一个常数名来构建一个新的Object子类了
类与模块分别是类Class和Module的实例
M = Module.newC = Class.newD = Class.new(C){ include M}把匿名模块或类赋给一个常量,那么常量的名字就是这个类或模块的名字。
所以我们可以这样写如下代码:
- class Point
- def initialize(x,y)
- @x, @y = x,y
- end
- attr_reader :x, :y
- def distance(point)
- Math.hypot(point.x - x, point.y - y)
- end
- end
这两段功能是相似的
- Point = Class.new do
- def initialize(x,y)
- @x, @y = x,y
- end
- attr_reader :x, :y
- def distance(point)
- Math.hypot(point.x - x, point.y - y)
- end
- end
- Class的new实例方法
Class里面的实例方法new是专门给类准备的,这个方法能让类完成如下操作
Class Cendc = C.new算法要找到一个类方法C.new,最后会在Class的实例方法中找到,因为“类”本身就是Class的一个实例。
--------(ruby编程语言 P272)
- 关于ruby的new方法的一点思考
- 关于response.sendRedirect()方法的一点思考
- 关于 && 的一点思考
- 关于new的一点笔记
- 关于计算机体系结构的一点思考。
- 关于计算机体系结构的一点思考
- 关于继承的一点思考
- 关于盗版的一点思考
- 关于宏的一点思考
- 关于计算机的一点思考
- 关于编程的一点思考
- 关于软件设计的一点思考
- 关于string的一点思考
- 关于makefile的一点思考
- 关于“概念”的一点思考
- 关于重载的一点思考
- 关于XSS的一点思考
- 关于code的一点思考
- 来自亚马逊总裁Jeff Bezos的一些建议
- 批处理(bat)命令大全
- C#调用webservice
- 使用回溯法求解数独问题,数独游戏算法
- java代码优化方案(转)
- 关于ruby的new方法的一点思考
- Java对象之间的比较之equals和==
- ucos-ii移植到ARM上的一个简单例子mini2440
- xmlRPC协议
- 【J2ME资料汇总】48个推荐资料+40个经典源码——下载目录
- js限制文本域输入长度
- 对Visual Assist x的设置 VS2010工程重新打开时 一直在加载而打不开
- ASP.NET Session的七点认识
- 协议 委托