特異クラス方式でのクラスメソッド定義

  
  
初心者です。初めての質問です。  
初歩的なことですみません。  
特異クラス方式でクラスメソッドを定義しておりますが下記コードで実行しても  
以下のようなエラーにぶつかってしまいます。

コード

[code]

    class << Hoge
    def bar
      'bar'
    end
    end
    
[/code]

エラー

`test.rb:4:in <main>': uninitialized constant Hoge (NameError)`

一応調べてみたものの原因がわからず。。お手数ですがお助けいただけますと幸いです。


CC BY-SA 3.0
2017-05-07T10:33:15.903
34516
2017-06-02T04:25:43.530
2017-05-07T11:41:53.197
19110
22994
question
ruby
クラスメソッドのエラー: uninitialized constant


エラーはメッセージの通り、Hogeが初期化(定義)されていないことを示しています。  
ですので、Hogeを定義しましょう。  
文法上、Hogeはクラスである必要はありませんが、意図しているのはクラスだと思いますので、次のようなコードになるでしょうか。

[code]

    class Hoge
    end
    class << Hoge
      def bar
        'bar'
      end
    end
    
[/code]

なお、このコードはこう書くこともできます(こちらの方が一般的かと思います)。

[code]

    class Hoge
      class << self
        def bar
          'bar'
        end
      end
    end
    
[/code]


CC BY-SA 3.0
2017-06-02T04:25:43.530
35210
2017-06-02T04:25:43.530
23348
34516
answer