エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント1件
- 注目コメント
- 新着コメント
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
クラス名やモジュール名の競合について -プログラミング言語のRubyでプ- Ruby | 教えて!goo
Rubyのモジュールやクラスは定数です。同じ名前空間で同じ名前の定数を定義することはできません。 です... Rubyのモジュールやクラスは定数です。同じ名前空間で同じ名前の定数を定義することはできません。 ですから、 class A end module A end とすると、A is not a module というエラーになります。 これは、クラスとして定義した A をモジュールとして開き直そうとしています。 但し、この class A と module A が別々のファイルに記述されていて、 class A、または。module A を呼び出した場合エラーにはなりません。 なぜなら、Ruby は定数の探索をして最初に到達したものを採用するからです。 そしてご質問のケースの場合、Ruby は module A を見つけたがクラスではないので、エラーを出しています。 a = A # => エラーにはならない。 a = A.new # => エラーになる。 つまり、同一の名前空間に同じ名前のクラ
2018/11/12 リンク