我喜欢Ruby,过去几年它是我的首选语言。
但是,即使我开始学习它,我也被排斥了这样一个事实,即经常有几种方法可以做同样的事情(或同等的事情)。我将举几个例子:
and
和or
之外,&&
和||
- 只看一下它们之间的混淆优先级差异导致for
关键字,几乎完全由经验不足的非本机Ruby开发人员使用此类设计决策背后的理由是什么?他们(Matz?)是否认为语言更容易采用,因此更受欢迎?
答案 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,表达式是布尔值。
有多种方法可以做到,但它们之间可能存在微妙的差异。 (更新,刚刚注意到你在你的问题中提到了优先级差异......抱歉。这里没什么可看的。继续前进。)