これはしばらくの間私を夜更かししてきました。
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
メソッドは他に何も使用できない構文を使用するのでしょうか。 - この構文を他のコンテキストで使用することは可能ですか?
- 言語の他の何もこのように機能しないときに、この奇妙な構文の癖を使用することの利点は何ですか?この言語の不一致による認識できるメリットは見当たりません。