为什么Ruby有这么多冗余?
我喜欢Ruby,在过去的几年里,它是我的首选语言 但是,即使从我开始学习它,我还是被一个事实所排斥,那就是经常有几种方法来做相同(或等效)的事情。我将举几个例子:为什么Ruby有这么多冗余?,ruby,language-design,redundancy,Ruby,Language Design,Redundancy,我喜欢Ruby,在过去的几年里,它是我的首选语言 但是,即使从我开始学习它,我还是被一个事实所排斥,那就是经常有几种方法来做相同(或等效)的事情。我将举几个例子: 方法通常有别名,因此您总是需要费心选择最合适、最流行或最普遍接受的替代方法 和和或,除了&和|之外,只要看看它们之间的优先级差异会导致多少混乱 for关键字,几乎完全由缺乏经验的非本地Ruby开发人员使用 这些设计决策背后的基本原理是什么?他们(Matz?)相信这种语言会更容易被采用,从而更受欢迎吗?当Matz写Ruby时,他试图
- 方法通常有别名,因此您总是需要费心选择最合适、最流行或最普遍接受的替代方法
和和
,除了或
和&
之外,只要看看它们之间的优先级差异会导致多少混乱|
关键字,几乎完全由缺乏经验的非本地Ruby开发人员使用for
这些设计决策背后的基本原理是什么?他们(Matz?)相信这种语言会更容易被采用,从而更受欢迎吗?当Matz写Ruby时,他试图遵循“最小惊喜原则”。这通常意味着有多种方法可以完成相同的任务,例如,使用方括号或插入方法为数组赋值。我很喜欢它,因为我发现我没有试着记住在什么情况下使用哪个确切的名称(我总是在Java中暂停片刻,看大小和长度),我只是写一些看起来合乎逻辑的东西,通常它会起作用。在阅读代码时,使用不同的名称通常不是问题,因为名称通常是自解释的。所以,我不担心哪一个最合适或最受欢迎,我选择了当时最合乎逻辑的 Matz也受到Perl的启发,Perl的口号是“有多种方法可以做到这一点” 我不相信Matz担心什么会是最流行的,他只是想写他想用的语言
我不会试图解释和vs&&尽管 Ruby的灵感来自Perl,Perl的一个重要理念是“有不止一种方法可以做到这一点”,即重新协商是好的,因为它给了程序员更多的自由(并且增加了他们想要的功能以他们给它的名称提供的可能性,而不仅仅是一个名称)。你的决定是否真的是件好事。请注意,
和
与和&
虽然相似,但优先级不同a=b和&c
#=>相当于a=(b和c)。a设置为布尔值a=b和c
#=>相当于(a=b)和c。a设置为b,表达式为布尔值
做这件事的方法不止一种,但它们之间可能有细微的区别。
(更新,刚刚注意到您在问题中提到了优先级差异……对不起,这里没什么可看的。请继续。)