`
敲代码的小北
  • 浏览: 7485 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

《Ruby元编程》读书笔记——星期一:对象模型

 
阅读更多

最近对红宝石很感兴趣。喜欢rails的简约,喜欢ruby的人性化。《Ruby元编程》它讲述了你和Bill(一个资深的Ruby程序员)在办公室一周发生的故事。读完后感觉对编程有了一个新的了解。关于“元”这个字眼。到周天再解释吧。

      话不多说,先看一段代码进入今天的主题。

 

  • 类打开技术

 

 

3.times do 
  class C
     puts "Hello"
  end

=> Hello
    Hello
    Hello

//====================
Class D
    def x; 'x' end
end

Class D
  def y; 'y' end
end

obj = D.new
obj.x =>'x'
obj.y =>'y'

 

 
我们知道在Java是一种编译后在虚拟机中运行中的静态的语言,不允许在同一个包里面有两个相同的类出现,更不允许,在类定义后,重新去定义。ruby作为一种动态类拥有以上的特别的写法。

如上 C类不是被定义了3个,而是执行了3次。

       D类第一次定义了一个x方法,返回值为'x'。第二次又定义了一个y方法,返回'y'。

我们称以上的技术叫“打开类”技术。非常的灵活。当然打开类也有不好的地方,比如类污染。

 

 

  • 类的真相
    1.一个对象的实例变量存在于对象本身,而一个对象的方法存在于对象自身的类。
String.instance_methods == "abc".methods   # true
String.methods == "abc".methods               #false
       2.类自身也是对象。
 


1."hello".class # => String
String.class # =>Class

2.  Class.instance_methods  #=> [:superclass,:allocate,:new]

3.  String.superclass  #=> Object
Object.superclass  #=>BasicObject
BasicObject.superclass  #=> nil

4.  Class.superclass  # => Module
Module.superclass #=>Object

5. class Myclass;end
obj1 = Myclass.new
obj2 = Myclass.new
 类和其他对象一样也有自己的类(如1),它的名字叫做Class。类中也有方法(如2),所有的类最终都继承与Object,Object本身又继承BasicObject,BasicObject是ruby体系的根节点。(如3).一个类只不过是一个增强的Module,增加了3个方法 new , allocate, superclass(如4).obj1和Myclass 都是一个引用,唯一的区别是obj1是一个变量,而Myclass是一个常量(任何以大写字母开头的引用)。

  • 总结
    对象无非就是一组实例变量外加一个指向其类的引用。对象的方法并不存在于对象中,而存在类中。这些方法称为类的实例方法。
   类无非就是一个对象外加一组实例方法和易对其超类的引用。Class类是Moudule类的子类。因此类也是一个模块。
跟任何其他对象一样,类有自己的方法,比如new方法。这些是Class类的实例方法。跟其他对象一样,类必须通过引用进行访问。你已经使用过常量引用过它们:这就是类的名字。

 本人为ruby新手,希望各路高手轻喷。
  

 

 

 

分享到:
评论

相关推荐

    Ruby元编程第二版中文

    Ruby元编程是编程领域中一个深入且强大的主题,它允许程序员在运行时修改或创建代码,极大地提高了灵活性和代码的动态性。这本书“Ruby元编程第二版”专注于讲解Ruby语言的这一独特特性,旨在帮助开发者更好地理解和...

    ruby元编程.pdf

    Ruby元编程是Ruby编程语言中的一个重要特色,它指的是Ruby语言允许程序员在运行时对类、方法和变量...通过阅读这本书,读者将能够找到一个有效学习Ruby元编程技术的方法,并将这些复杂的技术应用到实际的编程实践中去。

    《Ruby元编程》PDF版本下载.txt

    总之,《Ruby元编程》是每个希望深入掌握Ruby语言特性的开发者都应该阅读的一本书籍。通过学习元编程技术,不仅可以提高自己的编程水平,还能在实际项目中更加高效地解决问题。希望每位读者都能从中受益匪浅。

    Ruby元编程pdf

    Ruby元编程是编程的一种高级技巧,它允许程序员在运行时动态地修改或创建代码,极大地提高了灵活性和代码的可扩展性。Ruby作为一种动态类型语言,其元编程能力尤为强大,使得开发者可以创建出高度定制化的解决方案。...

    Ruby元编程-中文

    ruby 元编程 中文 《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开...

    Ruby元编程基础学习笔记整理

    ### Ruby元编程基础学习笔记整理 #### 一、语言构建(Language Constructs) 在Ruby中,诸如变量、类和方法等元素统称为语言构建(Language Constructs)。这些构建块是构成Ruby程序的基础。 ##### 示例代码分析 ```...

    Ruby元编程【英文版】

    4. **元类与元对象**:元类(即类的类)和元对象是Ruby元编程的核心概念。通过理解这些概念,开发者可以更好地掌握Ruby语言的强大之处。书中通过具体的例子解释了如何利用元类和元对象来实现复杂的元编程任务。 5. ...

    Ruby元编程中文版

    Ruby元编程中文版

    Metaprogramming Ruby 2nd Edition ruby元编程

    理解Ruby的对象模型是进行元编程的基础。通过了解对象是如何创建、如何存储数据以及如何交互的,我们可以更灵活地控制程序的行为。 2. **动态方法定义**:Ruby允许在运行时动态地添加新方法到类或对象上。这种能力...

    元编程 Ruby

    在Ruby这种动态编程语言中,元编程是一种核心技术,它不仅仅是一种技巧,更是Ruby和Rails框架中用于提高开发效率和软件复用性的关键方法。 在Ruby语言中,元编程主要通过方法拦截、动态方法定义、元类以及一些特殊...

    Ruby 元编程

    本书的第一部分“Ruby元编程”是本书的核心部分,他讲述了一个资深程序员在办公室一周发生的事情。 本书的第二部分“Rails中的元编程”是一个元编程实例,Rail是Ruby标志性框架。 在阅读本书之前,需要了解本书的三...

    Ruby元编程 源代码 Metaprogramming Ruby source code

    Ruby元编程是编程领域中的一个高级技术,它允许程序员在运行时操纵语言的结构和行为。这本《Metaprogramming Ruby》书籍深入探讨了如何利用Ruby的特性进行元编程,帮助开发者提升代码的灵活性、可扩展性和复用性。源...

    ruby笔记1ruby笔记1ruby笔记1

    标题中的"ruby笔记1ruby笔记1ruby笔记1"暗示了这是一份关于Ruby编程语言的学习笔记,可能包含了作者在学习过程中的重点、难点以及心得体验。描述中的内容重复了标题,进一步强调了这是关于Ruby的深入学习记录。标签...

    Ruby元编程 第2版 中文 佩罗塔著 2015.08

    ruby元编程 第2版 中文 目录清晰 方便广大通勤族路上看,如果喜欢请购买正版纸质图书

    ruby元编程

    《Ruby元编程》以案例形式循序渐进地介绍了Ruby特有的实用编程技巧 元编程 通过分析案例 讲解例题 回顾Ruby代码库的实现细节 《Ruby元编程》作者Paolo Perrotta不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题...

    基于Ruby编程语言基于Ruby编程语言基于Ruby编程语言基于Ruby编程语言.zip

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本资料包主要关注的是基于Ruby编程的基础知识和应用,包括如何使用Ruby进行开发和解决问题。 Ruby的设计哲学强调程序员...

    Ruby动态编程对象编程Ruby动态编程对象编程Ruby动态编程对象编程

    ### Ruby动态编程语言的核心知识点 #### 一、Ruby的特点与优势 **1. 简洁而优雅** - **设计哲学:“最小意外原则”** - Ruby的设计理念旨在减少不必要的复杂性和冗余,使得代码更加直观易懂。 - **简洁的语法** ...

    ruby编程学习笔记及demo

    Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。 您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro ...

Global site tag (gtag.js) - Google Analytics