Ruby 有什么 Smalltalk 没有的吗?

Does Ruby have anything that Smalltalk doesn't?

Ruby 有什么 Smalltalk 没有的吗?除了 Pascal/C 外观和运算符优先级外,该语言看起来几乎是一对一的。

Ruby 有而 Smalltalk 没有的东西:

  • Ruby 有混入; Smalltalk 没有。

  • Ruby 允许向单个对象添加方法;在 Smalltalk 中,所有 方法位于 classes.

  • Ruby 为了方便起见还有其他几种文字语法,Smalltalk 没有。

  • 在Ruby中,在Smalltalk中动态添加方法比较实用,有点用处,做法一般是把方法和classes当成静态的。

  • Ruby 在 class 定义中提供了强大的宏; Smalltalk 不提供 根本没有宏。

  • Ruby 提供了一种非常方便的语法来表达模式 斯特林岛即,正则表达式。它看起来就像在 Unix 中一样 "ed" 行编辑器,斜线之间有模式。 Smalltalk 有 在语法上完全不是这样。
  • 在Ruby中(如Self语言,这方面的先驱,以及 语言 Self 的名字来源于此),您通常可以 通过省略 "self" 的提及来缩写对 "self" 的消息调用。 例如,对于 "self.foo",您可以简单地写成 "foo"。但在 Smalltalk,你不能通过简单地写 "foo" 来缩写 "self foo"。 这使得编写和阅读 Ruby 代码变得非常经济。

  • Ruby 不需要声明所有局部变量和 实例变量。