inject和ruby中的reduce是一样的吗?

inject和ruby中的reduce是一样的吗?,ruby,alias,reduce,inject,Ruby,Alias,Reduce,Inject,我看到他们被记录在一起。它们是一样的吗?为什么Ruby有这么多别名(比如数组的map/collect)?非常感谢。是的,在许多其他编程语言和数学中它也被称为折叠。Ruby有很多别名,以便对不同背景的程序员更直观。如果要在数组上使用长度,可以。如果您想使用#size,也可以 的文档的最新版本明确规定: inject和reduce方法是别名。两者都没有性能优势 它们是一样的吗 是的,别名最终运行完全相同的代码 为什么Ruby有这么多别名(比如数组的map/collect) 它归结为语言的方法 不同的

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

是的,在许多其他编程语言和数学中它也被称为
折叠。Ruby有很多别名,以便对不同背景的程序员更直观。如果要在
数组
上使用
长度
,可以。如果您想使用
#size
,也可以

的文档的最新版本明确规定:

inject
reduce
方法是别名。两者都没有性能优势

它们是一样的吗

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

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

它归结为语言的方法

不同的语言有不同的方法,我试图:

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

但是,它们也有助于代码的清晰,因为有些东西可能具有不同的语义可能性,例如方法
midnight()
也可以表示为
start\u of_day
end\u of_day
。根据上下文的不同,这些信息可能更为清晰


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

如果你想创建自己的别名,你可能会感兴趣。#长度和#计数在Ruby中是不等价的#长度和#尺寸为0.3。长度给出了命名误差;3.大小返回4。很明显3不是数组,但是要小心duck类型!(3_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000.size返回8和3_000_000_000_000_000_000.size返回20;这似乎是它占用的内存量。),我认为当前的Ruby文档可能更好,如果它只是说与
inject
相同,这样用户就不必阅读这两个描述并试图找出它们是否相同。。。这不符合干燥原理吗@太極者無極而生, 好的一点,我被这搞糊涂了,就像你预测的一样,我喜欢根据它的使用方式来区分它们,显然只是为了语义。如果它是一个过程(
&:+
),则减少,如果它是一个块,则注入