十七、Ruby 有高级的 Array class 。 数组是动态的;您不必像在 Pascal 等语言当中那样在编译期声明数组大小。您不必像在 C/C++/Java 当中那样为数组分配内存空间。Ruby 的数组是对象,因此您不必时刻警惕其长度;原则上,您不可能像在 C 语言当中那样“越出数组的长度大限”。想以索引、元素,或者反向处理数组吗?想打印整个数组吗?Ruby 为所有这些事情提供了对应的方法。想把数组当作集合(set)、堆栈(stack),或队列(queue)来对待吗?Ruby 也为此提供了对应的方法。想把数组当作查找表(lookup table)来使用吗?这是个问题问得巧——您不必这样用,因为 Ruby 提供了哈希表专门处理这个问题。 十八、Ruby 是可扩展的。 您可以用 Ruby 或者 C 语言编写外部程序库。另外,您还可以随心所欲地就地修改现存的类和对象。 十九、Ruby 鼓励 literate programming(字面编程方式)。 您可以将注释嵌入到代码中,Ruby 的文档工具可以从中抽取和操纵这些注释。(Literate programming 的铁杆儿支持者或许会认为这是很基础的东西吧。) 二十、Ruby 以创新的方式使用分隔符和大小写。 返回 Boolean(尽管 Ruby 不这样称呼它)的方法通常都以问号结尾,而且,修改数据的方法的名称带有惊叹号。一切都简单、明了、直观。包括 class 名称在内的所有常量都以大写字母开头。所有对象的 attributes 都以 @ 标记开头。这种方案既有老式的“匈牙利表示法(Hungarian notation)”的务实性,又避免了龌龊刺眼的表现形式。 二十一、Ruby 的保留字不保留。 使用被称为“保留字(reserved word)”的标识符是完全没有问题的,只要保证别让语法分析器遇到歧义的情况就行。这可真是畅快。 二十二、Ruby 支持迭代器(iterator)。 Ruby 的迭代器使得“传递代码区块到对象中”这种操作可以经由这样的方式来完成,即对于数组、列表(list)、树(tree)等诸多结构中的每一个元素都能够调用指定的代码区块。这是个值得深入探究,威力强大的技巧。 二十三、Ruby 具有安全性特性。 Ruby 借用了 Perl 的“点缀(tainting)”概念,通过 $SAFE 变量实现了多种控制级别(揪心级别?)。此特性对于“为了攻破 web 服务器而被利用”的 CGI 程序而言,特别有好处。 二十四、Ruby 没有指针。 类似 Java,并向 C++ 恶狠狠地点了点头,Ruby 中没有“指针(pointer)”概念;不存在间接性,没有指针运算,没有语法和调试指针所带来的头疼困扰。当然,这意味着真正底层的系统编程变得困难了 一些,比如访问某设备的控制状态寄存器;但这些系统级事务总是可以利用 C 程序库来完成。(正如 C 程序员会在必要时使用汇编一样,Ruby 程序员会在必要时使用 C 语言!) 二十五、Ruby 关注细节。 Ruby 提供丰富的同义词和别名。不记得对数组或字符串是用 size 还是 length 吗?两个都可以用。对于范围(range),是用 begin 和 end ,还是 first 和 last?由您自选。您心里拼写 indices ,而您的手却拼出 indexes 吗?两个都可以用。 |