Java 已经很成熟,经过了测试,而且速度很快(与那些仍然反对 Java 的人所宣称的相反)。但它的代码也很冗长。从 Java 转到 Ruby,你会发现代码量会大大减少。你也会发现构建快速原型所需的时间也会减少。
相似之处
和 Java 一样,在 Ruby 中,...
- 内存通过垃圾回收器进行管理。
- 对象是强类型的。
- 有 public、private 和 protected 方法。
- 有嵌入式文档工具 (Ruby 的称为 RDoc)。RDoc 生成的文档看起来与 javadoc 生成的非常相似。
不同之处
与 Java 不同,在 Ruby 中,...
- 你不需要编译代码,可以直接运行。
- 有几种不同的流行第三方 GUI 工具包。Ruby 用户可以尝试 WxRuby、FXRuby、Ruby-GNOME2、Qt 或 Ruby Tk 等。
- 在定义类等内容后,你使用
end
关键字,而不是像 Java 那样用大括号包裹代码块。 - 你使用
require
而不是import
。 - 所有成员变量都是私有的。从外部,你通过方法访问所有内容。
- 方法调用中的括号通常是可选的,并且经常被省略。
- 一切都是对象,包括像 2 和 3.14159 这样的数字。
- 没有静态类型检查。
- 变量名只是标签。它们没有与之关联的类型。
- 没有类型声明。你只需根据需要分配新的变量名,它们就会“突然出现”(例如
a = [1,2,3]
而不是int[] a = {1,2,3};
)。 - 没有类型转换。直接调用方法即可。你的单元测试会在你运行代码之前告诉你是否会看到异常。
- 使用
foo = Foo.new("hi")
而不是Foo foo = new Foo("hi")
。 - 构造函数始终命名为 “initialize”,而不是类的名称。
- 你有 “mixins” 而不是接口。
- YAML 往往比 XML 更受青睐。
- 使用
nil
而不是null
。 ==
和equals()
在 Ruby 中有不同的处理方式。当你想要测试 Ruby 中的等价性时,使用==
(相当于 Java 中的equals()
)。当你想要知道两个对象是否相同时,使用equal?()
(相当于 Java 中的==
)。