Ruby 如何为每个可枚举方法创建别名?
是否可以为可枚举的Ruby 如何为每个可枚举方法创建别名?,ruby,Ruby,是否可以为可枚举的每个创建别名?例如,使my_each方法只是原始each的别名 我尝试使用别名,但没有成功: 模块可枚举 别名:my_each:each 终止 我知道我可以定义自己的my_each方法,但我只需要一个别名,以便在任何枚举器上使用时,它的行为与each完全相同。这应该可以做到: module Enumerable def my_each(*args, &block) each(*args, &block) end end p [1,2,3].my
每个创建别名?例如,使my_each
方法只是原始each
的别名
我尝试使用别名
,但没有成功:
模块可枚举
别名:my_each:each
终止
我知道我可以定义自己的my_each
方法,但我只需要一个别名,以便在任何枚举器上使用时,它的行为与each
完全相同。这应该可以做到:
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>
模块可枚举
每个定义我的_(*参数和块)
每个(*参数和块)
终止
终止
p[1,2,3]。我的每一个
# => #
p(1..5)。我的每一个
# => #
您不能使用别名,因为每个
实际上都不是可枚举
中的一个方法,所以不需要使用别名Enumerable
期望它混合到的每个类都提供它。不清楚您期望的是什么。你认为你的第一行代码是什么?它正在返回一个枚举器。它枚举了[1,2,3]
。您不能将my_each
与(1..5)
一起使用,因为它已经在枚举数组[1,2,3]
“我尝试了[…]但没有成功”不是一个足够精确的错误描述,我们无法帮助您。你到底是怎么尝试的?什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?想要的行为是什么?为什么?观察到的行为是什么?它们之间有什么不同?@JörgWMittag我用一个例子更新了这个问题,说明了我尝试过但没有成功的方法。尽管已经有了一个公认的答案,并解释了为什么这是不可能的。谢谢你的反馈。无论如何,问题已经解决了,这就是为什么我把我得到的答案标记为已接受。