2010-07-21 43 views
2

我爱Ruby,过去几年这是我的选择语言。为什么Ruby有这么多的冗余?

但是,即使在我开始学习它的时候,我常常会遇到几种方法来做同样的事情(或者相同的事情)。我给几个例子:

  • 方法通常有别名,所以你总是费心去选择最适当的,流行或普遍接受的替代
  • andor,除了&&|| - 只要看看有多少混乱优先差异当中引起
  • for关键字,使用几乎完全由没有经验的非原生Ruby开发者

什么这种设计决定背后的理由是什么?他们(马茨?)是否相信这种语言会更容易被采用,因此更受欢迎?

回答

7

红宝石是Perl的启发,一个重要的Perl的理念是“不止一种方法去做一件事”,即重新编号是很好的,因为它们给程序员更多的自由(并且增加了他们想要的功能在他们给予的名字下可用的可能性 - 不仅在一个之下)。你的决定是否真的是一件好事。

1

当马茨写红宝石时,他试图遵循'最小惊奇原则'。通常这意味着会有多种方法来做同样的事情,例如通过使用方括号或插入方法分配给数组。我喜欢它,因为我发现,不是试图记住在哪种情况下使用哪个确切的名称(我总是用一段时间来暂停Java中的大小和长度),我只是写出看起来合乎逻辑的东西,通常它会工作。阅读代码时,使用不同的名称通常不是问题,因为名称通常是不言自明的。所以,我不担心哪个最适合或最受欢迎,我选择当时最合乎逻辑的方法。

Matz也受Perl的启发,它有'不止一种方式来做'作为它的口号。

我不相信Matz担心什么是最受欢迎的,他只是想写他想用的语言。

我不会试图解释和VS & &虽然...

1

请注意,and&&尽管相似,但具有不同的优先顺序。
a = b && c#=>等于a =(b和c)。 a被设置为布尔值。
a = b and c#=相当于(a = b)和c。 a被设置为b,而expression是一个布尔值。

有多种方法可以做到这一点,但它们之间可能存在细微的差异。 (更新,刚刚注意到你提到了你的问题中的优先级区别......对不起,这里没有什么可看的。)

相关问题