Rubyにおけるクラス変数とインスタンス変数の比較

1489 ワード

1、クラス変数名は@@で始まり、1つのクラス変数はこのクラスのすべてのインスタンスオブジェクトによって共有される.インスタンス変数名は@で始まり、各インスタンスオブジェクトにはそれぞれ異なるインスタンス変数があります.
2、クラス変数は使用前に初期化しなければならない.そうしないと、使用時にエラーが発生する.インスタンス変数が初期化されていない場合、使用時にnilを返します.
3、クラス変数はプライベートで、クラス外で直接アクセスできず、クラスメソッドとインスタンスメソッドでアクセスできる.
 
  
class B
    @@number = 11
    @@num = 22
 
    def my_method      #
        puts @@number
    end
 
    def self.my_method  #
        puts @@num
    end
end
 
b = B.new()
puts b.my_method() #   => 11
puts B.my_method() #     => 22

4、インスタンス変数もプライベートであり、クラス外で直接参照することができず、クラスメソッドとインスタンスメソッドでアクセスすることができる.
 
  
class B
      @num  = 11    # “ ”
      @test = 22
      def my_method      #
          puts @num = 33 # @num    =>33
          puts @test     # @test , , nil 
          puts @new = 567  # my_method =>567
      end
      def self.my_method      #
         puts @num        # @num @num  =>11
         puts @test       # =>22
     end
 end
 
 b = B.new()
 
 b.my_method
 puts "--------------------"
 B.my_method