49900


Ruby初心者です．  
Rubyのクラスに関する文法で質問があります．

クラスの中にクラスを作る方法はあるのでしょうか？  
D言語であればUFCSでつながるように参照・更新がしたいです．

ご教授宜しくお願いします．

例えば，以下のような感じでコードを書きたいです．  
（以下の例はRubyの文法にはしたがっているとは限りません）

[code]

    class Class1
        class Class2
           def initialize
               @value = 10
           end
    
           attr_accessor :value
        end
    end
    
    class1 = Class1.new
    p class1.class2.value  #参照も更新もできる
    
[/code]


CC BY-SA 4.0
2018-11-01T10:48:24.000
49856
2018-11-02T10:06:12.363
2018-11-01T11:32:30.773
30173
30173
question
ruby d
Rubyのクラスに関する文法


端的に答えると、そのようなものは(がんばってどうにかそれっぽく実装しないかぎり)存在しない、と思います。

ruby
において、クラスの中にクラスを定義した場合、外部のクラスと内部のクラスの関係は、とあるモジュールとその中に定義したクラスの関係と、ほとんど同じです。この場合、外部のクラス（や、同じような形で外部のモジュール）は、基本的にクラス定数を定義しておく名前空間的な役割しか、言語機能的にもっていません。

質問者さんがやりたいことは、フィールドのコンポジションへの分解的なことかな、と思います。自分がやるとしたら、素直に次のような形になるかなと思います。

[code]

    class Class1
      class Class2
        def initialize
          @value = 10
        end
        attr_reader :value
      end
    
      def initialize
        @class2 = Class2.new
      end
      attr_reader :class2
    end
    
    class1 = Class1.new
    class1.class2.value # => 10
    
[/code]


CC BY-SA 4.0
2018-11-02T10:06:12.363
49900
2018-11-02T10:06:12.363
754
49856
answer