Как создать псевдоним для каждого метода Enumerable? - PullRequest
0 голосов
/ 26 мая 2020

Можно ли создать псевдоним для Enumerable each? Например, чтобы иметь метод my_each, который является просто псевдонимом оригинального each.

Я безуспешно пытался использовать alias:

module Enumerable
  alias :my_each :each
end

Я знаю, что могу определить свой собственный метод my_each, но мне просто нужен псевдоним, чтобы он вел себя точно как each при использовании в любом перечислителе.

1 Ответ

5 голосов
/ 26 мая 2020

Это должно сработать:

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>

Вы не можете использовать псевдоним, потому что each на самом деле не является методом в Enumerable, поэтому псевдоним не нужен. Enumerable ожидает, что каждый класс, в который он включен, предоставит его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...