如何为每个 Enumerable 方法创建别名?

Mau*_*ayo -1 ruby

是否可以为 Enumerable 创建别名each?例如,让my_each方法只是原始each.

我尝试使用但alias没有成功:

module Enumerable
  alias :my_each :each
end
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义自己的my_each方法,但我只想要一个别名,以便它的行为与在任何枚举器上使用时完全一样each

Ama*_*dan 5

这应该可以解决问题:

module Enumerable
  def my_each(*args, &block)
    each(*args, &block)
  end
end
p [1,2,3].my_each
# => #<Enumerator: [1, 2, 3]:each>
p (1..5).my_each
# => #<Enumerator: 1..5:each>
Run Code Online (Sandbox Code Playgroud)

你不能别名,因为each它实际上不是 中的一个方法Enumerable,所以没有什么可以别名的。Enumerable期望它混入的每个类都提供它。