分析 rudy 类

 更新时间:2007年11月24日 14:09:15   作者:  
 现实世界满是对象,我们可以为他们分类.举个例子,非常小的孩子看见狗的时候,不管那是什么种类的,都会叫它们"bow-wow";我们天生有通过种类来了解世界的能力.

在OO编程的术语里,像"狗"这样的一类对象称之为一个类,一些特殊的属于这个类的对象叫作类的实体(instance of that class).

一般的,在Ruby或其它OO语言里创造一个对象首先得定义类的属性,接着再创造一个实体.为了说明这一点,让我们先来定义一个简单的Dog类.

ruby> class Dog
    |   def speak
    |     print "Bow Wow\n"
    |   end
    | end
   nil 


在Ruby里,一个类的定义是在关键字class和end之间的一段代码.在域中的def开始定义类的一个方法(我们已在上一节讨论过了),它对应于此类中的某些特定的对象方法.

既然我们已有了Dog类,我们就可以用它来创造一只狗:

ruby> pochi = Dog.new
   #<Dog:0xbcb90>  


我们已完成了Dog类的一个全新的实体并为它取名pochi.任何类的new方法都会创生一个新的实体.因为pochi是一只对应于我们已定义类中的狗,它就有我们定义的Dog的一切属性.因为我们对Dog的想法实在简单,我们只能让pochi玩一种把戏.

ruby> pochi.speak
Bow Wow
   nil  


创造一个新的类实体有时也被称作类的实体化(instantiating).我们需要逗一只实实在在的狗;而不是希望让Dog类向我们汪汪叫.

ruby> Dog.speak
ERR: (eval):1: undefined method `speak' for Dog:class  


吃"三明治的概念"显然也是毫无意义的.

同时,如果我们只是想听听狗叫声而不带任何情感,我们可以创造(实体化)一只短命的,临时存在的狗,并在消失前小吠几声.

ruby> (Dog.new).speak   # or more commonly, Dog.new.speak
Bow Wow
   nil  


"等等,"你说,"这只可怜的家伙消失到什么地方去了?"是这样的:如果我们不介意给它个名字(就像早先给pochi一样),Ruby的自动垃圾回收器会认为那是只流浪犬,然后不留情的处理掉它.这的确可行,你知道的,因为我们可以随心所欲地创造任何的狗.  
 

相关文章

  • Ruby语言中的String深入理解

    Ruby语言中的String深入理解

    在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String对象。而在Ruby中, str1和str2是完全不同的对象。
    2011-01-01
  • ruby中 %W{}和%w{}的使用案例详解

    ruby中 %W{}和%w{}的使用案例详解

    %w{}是Ruby中的一种快捷方式,用于创建一个以空格分隔的字符串数组,在使用 %w 时,Ruby 会将字符串中的空格作为分隔符,将其拆分成一个字符串数组,这篇文章主要介绍了ruby中%W{}和%w{}的使用,需要的朋友可以参考下
    2023-06-06
  • Ruby中的变量学习总结

    Ruby中的变量学习总结

    这篇文章主要介绍了Ruby中的变量学习总结,本文详细讲解了Ruby中的局部变量、实例变量、类变量、全局变量等4种变量类型,并对它们的作用范围做了总结,需要的朋友可以参考下
    2014-11-11
  • Ruby简洁学习笔记(二):类继承、属性、类变量

    Ruby简洁学习笔记(二):类继承、属性、类变量

    这篇文章主要介绍了Ruby简洁学习笔记(二):类继承、属性、类变量,本文是个人学习总结第二篇,需要的朋友可以参考下
    2015-01-01
  • ruby 去掉文件里重复的行

    ruby 去掉文件里重复的行

    以前合并后台字典时,有重复的都是用vbs去,最近又看了一天的ruby,想起来写一下,没想到代码如此精简
    2009-04-04
  • Windows下安装配置Ruby的debug工具ruby-debug-base19

    Windows下安装配置Ruby的debug工具ruby-debug-base19

    这篇文章主要介绍了Windows下安装配置Ruby的debug工具ruby-debug-base19的方法,同时讲解了Ruby的IDE RubyMine中的相关配置方法,需要的朋友可以参考下
    2016-03-03
  • ruby开发vim插件小结

    ruby开发vim插件小结

    作为一个Vimmer和Pythoner,之前折腾过用python编写vim插件。现在作为半个Rubist,又开始继续折腾。
    2014-07-07
  • Ruby 中$开头的全局变量、内部变量、隐藏变量介绍

    Ruby 中$开头的全局变量、内部变量、隐藏变量介绍

    这篇文章主要介绍了Ruby 中$开头的全局变量、内部变量、隐藏变量介绍,需要的朋友可以参考下
    2014-04-04
  • 采用UTF-8解决Ruby on Rails程序的中问题

    采用UTF-8解决Ruby on Rails程序的中问题

    将.rb文件和.rhtml文件都保存为utf-8格式
    2008-12-12
  • 详解Ruby中的异常

    详解Ruby中的异常

    这篇文章主要介绍了详解Ruby中的异常,异常的抛出和处理是各种编程语言学习中基础知识,需要的朋友可以参考下
    2015-04-04

最新评论