解决方法
它被认为是优雅的,因为它是正交的.这是一个奇怪的方法,说类似的操作适用于类似的操作数.
简单的例子:整数加上它们;在浮点数上,同上.大整数也是.在字符串上,它连接它们(你也会期待).现在这不是什么大不了的事情,你可以期望它来自任何体面的编程语言.但是有地图或过滤器这样的操作,他们可以在列表(他们应该!)上工作,但是它们也可以在数组上工作,实际上也可以被列举或迭代.
我喜欢数组(或列表)索引的工作原理,可以使用正整数索引从起始索引,或者使用负索引从结构的末尾指定一个位置,可以指定一个范围来拉出一个子集.这也适用于列表,数组和(子)字符串.它工作在赋值(=)的右侧,它在左侧工作(您可以分配到子字符串,从而替换字符串的一部分).所以你不需要一个substring_replace函数,你只是利用现有的一般概念.
Ruby的作者在满足用户(即程序员)的期望方面表达了这一点:尽可能少的惊喜,每当常识意味着你会以某种方式期待某件事情发生时,应该是这样.他非常努力地满足这一要求.此外,Ruby从Perl借来一点,作者不赞同Perl的TMTOWTDI原则,赞成Python的禅:“应该有一个,最好只有一个明显的方法.”
Ruby也关闭(=代码块)也很好,因此您可以通过将其包装在一对大括号中来指定函数.有一些适合于内联指定函数的地方,Ruby可以方便地进行.
Ruby允许您使用少量编码来执行操作,因为它的构造以强大的方式组合在一起.我在Project Euler发现,我经常发现Ruby中最简洁易懂的解决方案.最短的是在J,但这是一个APL方言,并且unenitiated它看起来像线噪音.
我的个人经验是这样的:我教自己的Ruby和Rails,并在一周内写了一个具有中等复杂数据分析的Web应用程序.我学到的每一个原则,我可以在不同的地方应用不同的数据 – 它只是工作™!