为什么Ruby有这么多裁员?

时间:2010-07-21 12:11:21

标签: ruby language-design redundancy

我喜欢Ruby,过去几年它是我的首选语言。

但是,即使我开始学习它,我也被排斥了这样一个事实,即经常有几种方法可以做同样的事情(或同等的事情)。我将举几个例子:

  • 方法通常有别名,所以你总是不得不费心去选择最合适,最受欢迎或普遍接受的替代方案
  • 除了andor之外,
  • &&|| - 只看一下它们之间的混淆优先级差异导致
  • for关键字,几乎完全由经验不足的非本机Ruby开发人员使用

此类设计决策背后的理由是什么?他们(Matz?)是否认为语言更容易采用,因此更受欢迎?

3 个答案:

答案 0 :(得分:7)

Ruby受到Perl的启发,一个重要的Perl哲学是“有多种方法可以做到”,即redunancies很好,因为它们给程序员更多的自由(并增加了他们想要的功能可用的几率)在他们的名义下,他们给予它 - 不仅仅在一个下面。你的决定是否真的是一件好事。

答案 1 :(得分:1)

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

Matz的灵感来自于Perl,它的口号是“有多种方法可以做到”。

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

我不会尝试解释和vs&&虽然......

答案 2 :(得分:1)

请注意,and&&虽然相似,但优先级不同。
a = b && c#=>相当于a =(b和c)。 a设置为布尔值。
a = b and c#=>相当于(a = b)和c。 a设置为b,表达式是布尔值。

有多种方法可以做到,但它们之间可能存在微妙的差异。 (更新,刚刚注意到你在你的问题中提到了优先级差异......抱歉。这里没什么可看的。继续前进。)