Ruby中的方法同义词

时间:2010-03-30 23:17:06

标签: ruby

我熟悉Ruby,这是我第一次看到标准库中方法的同义词。现在我在Enumerable模块中找到了那些:

collect <-> map
detect <-> find
include <-> member
etc.

其他模块也可能包含同义方法。他们为什么在那里?它是某种向后兼容性吗?或者它是语言的一个特征,所以程序员可以根据上下文选择不同的选项,使程序看起来像普通的英语?

2 个答案:

答案 0 :(得分:3)

我认为它与其他编程语言的单词用法兼容。 Ruby基于Smalltalk。在Smalltalk中,collect表示地图。但是,世界上大多数编程语言使用map,因此Ruby添加了map以使其他人感到熟悉。

有关详细信息,请参阅http://en.wikipedia.org/wiki/Map_function

答案 1 :(得分:3)

同义词以来自不同脚本或编程背景的用户的熟悉度与现有术语(例如mapgrep等相比非常熟悉来自Perl背景。)

有时,间接地使用这些同义词也很方便。在Rails associations中,其行为类似于可枚举的,find被重载以执行实际的SQL查询,而detect同义词仍然可用于执行实际的可枚举find } / detect