質問: Rubyを学習中のものです。 同じ名前のクラスを定義して実行してみたのですが、エラーが でませんでした。。 なぜなのでしょうか?
回答: エラーにならないのは、ruby の言語仕様です。 参照情報を紹介します。 - Rubyとはどんな言語か > ... > Rubyにとって、クラスはたった一度の定義で固定されるものではありません。 > プログラマは好きなときにクラスを「オープン」し、機能拡張することができます。 > ... > さっきと同じDogという名前でクラス定義を行ってみると、先に定義したsayも失われることなく、引き続き使えていることがわかります。つまりclass Dogで新しい定義が上書きされるのではなく、既存のDogクラスに機能を追加することができるのです。 > 自分で定義したクラスはもちろん、StringやArrayといった標準クラスも自在に拡張できます。このように「言語を使うプログラマを信頼し、大きな(そして場合によっては危険な)力を与える」というのも、Ruby言語仕様の特徴の一つです。 > ... - メタプログラミングの入り口、オープンクラスを理解する > ... > オープンクラスとは > 既存するクラスを好きな場所で再オープンし、 > メソッド修正・追加など任意の変更を加えられる機能のこと。 > ... * teratail での別の質問 Ruby オープンなクラスというのはなんですか?