116

我看到他们在这里一起记录。它们是一样的吗?为什么 Ruby 有这么多别名(比如数组的 map/collect)?非常感谢。

4

3 回答 3

166

是的,它fold在许多其他编程语言和数学中也被调用。Ruby 使用了很多别名,以便对不同背景的程序员更直观。如果你想#length在一个 上使用Array,你可以。如果你想使用#size,那也没关系!

于 2012-12-11T03:44:43.647 回答
7

Enumerable#reduce明确指定它的文档的更新版本:

和方法是别名injectreduce两者都没有性能优势。

于 2017-09-24T08:28:36.803 回答
1

它们是一样的吗?

是的,别名最终运行完全相同的代码。

为什么 Ruby 有这么多别名(比如数组的 map/collect)?

它归结为语言的方法

不同的语言有不同的方法,我在这里尝试将其可视化

在此处输入图像描述

Ruby 这样做是为了提高开发人员的生产力。基本上,通过使用别名,您可以让来自不同编程语言人类语言背景的程序员更直观地编写代码。

但是,它们也可以帮助您的代码清晰,因为某些事物可能具有不同的语义可能性,例如方法midnight()也可以表示为start_of_dayend_of_day。根据上下文,这些可能会更清楚。

顺便说一句,一些程序员也使用injectandreduce来区分不同的语义情况。

于 2021-02-15T19:33:59.943 回答