Rubyの予約語についてちょっと混乱しています。
Matz が共著した「The Ruby Programming Language」では、begin
andend
はこの言語の予約語であると述べています。それらは確かに構文的にブロックをマークするために使用されます。
ただし、言語の範囲オブジェクトには、次のようにbegin
およびという名前のメソッドがあります。end
(1..10).end
=> 10
これをテストしてみると、オブジェクトに「begin」および「end」という名前のメソッドを定義できることがわかりましたが、変数に「begin」という名前を付けようとすると失敗します。(これはメソッド名として使用するサンプルです。実際に動作します...:)
class Foo
def begin
puts "hi"
end
end
Foo.new.begin
では、このような予約語は実際にはどのような状態になっているのでしょうか。私は、それらをメソッド名に使用できない (それでも機能しているように見える) か、少なくともひどいスタイルになるだろう (ただし、実際には Range クラスのコア言語で使用されている) と想像していたでしょう。
いつ、何のために使用できるのか、かなり混乱しています。これに関するドキュメントさえありますか?