Ruby的对象模型】的更多相关文章

目录 备注对象模型无图无真相基本规则代码示例如何修改Singleton Class?如何修改类型,如Child?类型方法是特殊的实例方法,这些方法定义在类型的Singleton Class中.备注 备注返回目录 如果说哪门语言对我影响最大,那就是Ruby了,在.NET阵营多年,试图去用C#的思维去解释很多东西,当然解释Java是足够了,可惜我也用了好几年去解释Javascript,结果是可想而知的:解释不通.直到我遇到Ruby,这让我了解到一件事:不能用一种语言的思维去解释另外一种语言,当然某些…
备注 如果说哪门语言对我影响最大,那就是Ruby了,在.NET阵营多年,试图去用C#的思维去解释很多东西,当然解释Java是足够了,可惜我也用了好几年去解释Javascript,结果是可想而知的:解释不通.直到我遇到Ruby,这让我了解到一件事:不能用一种语言的思维去解释另外一种语言,当然某些局部特点是有可比性的. 本文重点解释一下Ruby的对象模型(可以理解我Javascript的原型模型),有此可以看出Ruby的完美和统一. 对象模型 无图无真相 基本规则 一切皆为对象:instance是一…
最初的代码如下: class Object def abc p "instance abc" end def self.abc p "class abc" end end obj=Object.new obj.abc #instance abc Object.abc #class abc 修改一下: class Object def abc p "instance abc" end end obj=Object.new obj.abc #inst…
<Ruby元编程> 第二章 对象模型 类定义揭秘inside class definitions: class关键字更像一个作用域操作符,核心作用是可以在里面随时定义方法. [].methods.grep(/^re/):调用 出Array的所有以re开头的method. Monkeypatch:涉及全局修改,定义某个方法前应该仔细检查该类是否已有同名的方法. 实例对象存放在对象中,方法存放在类中. 类的真相:类本身也是对象.Ruby允许在运行时修改类的信息. Class.instance_me…
这两周工作内容较多,平时自己也有点不在状态,学的东西有点少了,趁着现在还有点状态,赶紧复习一下之前学习的Ruby吧. Ruby是我真正开始接触动态语言魅力的第一个语言,之前虽然也用过且一直用perl.python等脚本语言,但是只是作为unix shell的扩展(和工作有关),没有真正地审视动态语言的哲学.是<Ruby元编程>这本书,好像给我打开了一扇新世界的大门,书中介绍的每一个特性都让我兴奋地几乎跳起来,这就是学习的魅力吧. Ruby语言初探 由于是第一个Ruby的随笔,先简单介绍一下ru…
参考<Ruby元编程>,元编程,即 用来编写代码的代码 . 对象由一组实例变量和一个类的引用组成 对象的方法存在与对象所属的类中,类似js中的prototype,在ruby中准确的说,应该是实例方法 类本身是Class类的队形,类的名字不过是常量而已 Class类是Module的子类,模块基本上是由一组方法组成的包.类除了具有模块的特性,还可以被实例化,组织为层次结构 常量像文件系统,按照树形结构组织 每个类都有一个祖先链,这个链从自己所属的类开始,向上知道BasicObject类结束 当调用…
必备工具 irb 查祖先 1.9.3-p545 :023 > String.ancestors => [String, Comparable, Object, Kernel, BasicObject] String的前面有四个上级 过滤方法 Ruby的方法非常多,以至于不得不用grep了. 1.9.3-p545 :049 > [].methods.grep /^me/ => [:member?, :methods, :method] 查方法来源 1.9.3-p545 :018 &g…
学习地址:http://www.ixueyun.com/lessons/detail-lessonId-685.html 一.课程概述 软件开发在经历了面向过程编程的阶段,现在正大行其道的是敏捷开发,它是针对传统的瀑布开发模式的 弊端而产生的一种新的开发模式,它的目标是提高开发效率和响应能力.它通过积极反馈.快速迭代的方 式开发项目.本项目正是实践敏捷开发并且结合当前社会人们在生活圈子中,为了能够在最低成本下分享 更加精彩的生活的实际需求,应用Ruby on Rails这个完整的MVC框架开发.…
一 对象模型 kernel Module Kernel.private_instance_methods.grep(/^pr/)   private method 1 如果一个方法接收者不是你自己,一定要指定一个接收者 2 私有方法 只能指定一个隐含接收者(可调超类的私有方法) 类本身是Class类的对象.类的名字是个常量 Class<Module,模块和类的名字扮演目录角色,按树形结构组织 include Module时 M被插入到祖先链中,在该类的正上方 二 方法 obj.send(:met…
在讨论对象模型时,对类做了初步了解,关于类本身,还有许多知识需要学习. 类定义 Ruby中,可以用class关键字或者Class.new方法来定义一个类,在Ruby中,类定义的同时就是在运行代码,类和方法.块一样,会返回最后一条语句的值,由于类也是一个对象(Class的实例),所以在类定义操作时,类本身就会充当self: result = class MyClass    puts self    "return value"endputs result 以上语句输出: MyClass…