Ruby中的map和collect之间的区别?
我已经用Google搜索并得到了不完整/矛盾的观点 - 在Ruby / Rails中对数组执行
map
和执行collect
之间是否存在任何差异?
这些文档似乎没有任何暗示,但是方法或性能可能存在差异吗?
没有找到相关结果
已邀请:
5 个回复
朗排谎纷瘟
在C中实现为
和
(例如,数组和任何其他枚举上的
之间存在差异,但
和
之间没有区别)。 为什么Ruby中存在
和
?
函数在不同语言中有许多命名约定。维基百科提供了一个概述: map函数起源于函数式编程语言,但现在支持(或可能定义)许多过程,面向对象和多范式语言:在C ++的标准模板库中,它被称为
,在C#(3.0)中s LINQ库,它作为一个名为
的扩展方法提供。 Map也是Perl,Python和Ruby等高级语言中经常使用的操作。在所有这三种语言中,该操作被称为
。 Ruby(来自Smalltalk)[强调我的]也提供了地图的
别名。 Common Lisp提供了一系列类似地图的功能;与此处描述的行为相对应的一个称为
(-car指示使用CAR操作的访问)。 Ruby为Smalltalk世界的程序员提供了一个别名,让他们有宾至如归的感觉。 为什么阵列和枚举有不同的实现?枚举是一种通用的迭代结构,这意味着Ruby无法预测下一个元素是什么(您可以定义无限枚举,请参阅Prime示例)。因此,它必须调用一个函数来获取每个连续的元素(通常这将是
方法)。 数组是最常见的集合,因此优化其性能是合理的。由于Ruby对数组如何工作有很多了解,因此不必调用
,但只能使用简单的指针操作,这种操作要快得多。 对于许多数组方法,例如
或
,存在类似的优化。
爆刺疤灯
距相镭
我得到的结果是:
也许别名不是免费的?
广躺椽
http://ruby-doc.org/core-2.2.0/Array.html#method-i-map
耐钨徒
和
方法是
和
的别名,因此它们可以互换使用。这是一个简单的方法来确认: