Rubyにおけるクラス変数とインスタンス変数の比較
1489 ワード
1、クラス変数名は@@で始まり、1つのクラス変数はこのクラスのすべてのインスタンスオブジェクトによって共有される.インスタンス変数名は@で始まり、各インスタンスオブジェクトにはそれぞれ異なるインスタンス変数があります.
2、クラス変数は使用前に初期化しなければならない.そうしないと、使用時にエラーが発生する.インスタンス変数が初期化されていない場合、使用時にnilを返します.
3、クラス変数はプライベートで、クラス外で直接アクセスできず、クラスメソッドとインスタンスメソッドでアクセスできる.
4、インスタンス変数もプライベートであり、クラス外で直接参照することができず、クラスメソッドとインスタンスメソッドでアクセスすることができる.
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