Ruby的模块非常类似类,除了:模块不可以有实体 模块不可以有子类 模块由module...end定义.实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看下去吧.模块有两种用法.其一是将相近的方法和实体放在一个相对集中的域里.Ruby标准包里的Math模块就扮演着这一角色:ruby> Math.sqrt(2) 1.41421ruby> Math::PI 3.14159 ::操作符告诉 Ruby&nbs...
http://www.jb51.net//article/12876.htm
实体的行为取决于其类,但很多时候我们知道一个特定的实体需要特定的行为.在很多语言里,我们必须陷入另外再定义一个类的麻烦里,即使它只是用来接着实体化一次.在Ruby里,我们可以赋予任何对象属于其自身的方法.ruby> class SingletonTest | def size | print "25\n" |&...
http://www.jb51.net//article/12875.htm
面向对象是一个挺让人迷惑的措辞.叫一切东西都是面向对象会让别人觉得你很时髦. Ruby 声称自己是面向对象的脚本语言;但究竟什么才是"面向对象"? 我们已经有了各种各样的答案,但所有这些恐怕都归结于同一件事.与其快速地概括它,不如让我们先花点儿时间考虑一下传统的编程模式.传统意义上,一个编程问题从出现的各种数据,以及处理数据的过程(procedures)着手.在这一模式下,数据是呆板,被动和无用的;它完全的求助于那个体积庞大的,主动的,逻辑性的,全能的过程体.这一做法的问题在于程序是由程序员写的,而他们仅仅能在工作中记下为数不多的细节.而随着工程的加大,它的核心也...
http://www.jb51.net//article/12869.htm
迭代器并不是Ruby发明的.它广泛地运用于各种面向对象语言.在Lisp中也有,只是不这么叫罢了.尽管如此,迭代器的概念并不为许多人熟悉,因此我们将在此做较为详细的介绍.你知道,动词 iterate 的意思是做同一件事许多遍,因此,iterator就是用来将同一件事做许多次的东西.当我们写代码时,我们需要各种环境下的循环.在C里,我们用for或者while.比如,char *str;for (str = "abcdefg"; *str != '\0'; str++) { &nb...
http://www.jb51.net//article/12868.htm
这章我们将讨论更多的Ruby流程控制.case我们用case语句测试有次序的条件.正如我们所见的,这和C,Java的switch相当接近,但更强大.ruby> i=8ruby> case i | when 1, 2..5 | print "1..5\n" | when 6..10  ...
http://www.jb51.net//article/12867.htm
现在我们将前面的一些示例程序的代码坼开来分析一下.下面的例子出现在简单的例子一节.def fact(n) if n == 0 1 else n *&n...
http://www.jb51.net//article/12866.htm
你通过在方括号里列出元素并用逗号将它们相互隔开来创建一个数组. Ruby的数组可以适应不同的对象类型ruby> ary = [1, 2, "3"] [1, 2, "3"] 就像前面提到的字符串一样.数组也可以相乘或相加ruby> ary + ["foo", "bar"] [1, 2, "3", "foo", "bar"]ruby>...
http://www.jb51.net//article/12865.htm
我们再看一个更有趣的程序.这次我们来测试一个字符串是否和一个由简明模式(concise pattern)编码产生的描述相匹配.在这些模式(pattern)里,一些字符或字符组合都有独特的意义,包括: [code][] 范围描述符 (比如,[a - z] 表示在a 到 z 范围内的一个字母) \w 字母或数字;相当于 [0-9A-Za-z] \W 非字母,数字 &nb...
http://www.jb51.net//article/12864.htm
Ruby将字符串像数字一样处理.我们用单引号('...')或双引号("...")将它们括起来.ruby> "abc" "abc"ruby> 'abc' "abc"单引号和双引号在某些情况下有不同的作用.一个由双引号括起来的字符串允许字符由一个前置的斜杠引出,而且可以用#{}内嵌表达式.而单引号括起来的字符串并不会对字符串作任何解释;你看到的是什么便是什么.几个例子:ruby> print &...
http://www.jb51.net//article/12863.htm
让我们写一个计算阶乘的函数.对于阶乘的数学定义如下:n! = 1 (当 n==0 时) = n * (n-1)! (其它情况)在Ruby里,可以这样来写:[code]def fact(n) &...
http://www.jb51.net//article/12862.htm
首先,你得检测Ruby是否已经安装了.在shell的提示符处(这里表示为"%",所以不要敲入%),敲入% ruby -v (-v 告诉解释器打印出Ruby的版本),然后敲回车.如果安装了Ruby,你会看见类似如下的信息:% ruby -vruby 1.6.6 (2001-12-26) [i586-linux] 如果Ruby未安装,你可以让管理员安装它,或者可以自己做,Ruby是一个没有安装或使用限制的自由软件.现在,让我们和Ruby玩玩.你可以通过一个-e参数直接在命令行...
http://www.jb51.net//article/12861.htm
