Это поддерживало меня ночью на некоторое время.
class Foo
def bar
'bar'
end
# What the hell is going on here?!?
alias :baz :bar
end
Foo.new.baz #=> 'bar'
Почему alias
принимает 2 символа в качестве аргументов, но без запятой, разделяющей их? В любом другом контексте это не похоже на синтаксис. И на самом деле, если вы используете запятую, она действительно выдает синтаксическую ошибку.
alias :bar, :baz
# syntax error, unexpected ','
Однако, если я попытаюсь передать 2 символа таким же образом своему методу, он также взрывается:
def somemethod(*args)
:whatever
end
somemethod :a :b
# syntax error, unexpected ':', expecting $end
- Итак, почему метод
alias
использует синтаксис, который ничего больше не может использовать? - Можно ли использовать этот синтаксис в любом другом контексте?
- В чем преимущество использования этого нечетного синтаксического причуда, когда ничто другое на языке не работает таким образом? Я не вижу заметной пользы от несоответствия этого языка.