インスタンス変数、クラス変数、およびRubyでのそれらの違いを理解するのに苦労しています...誰かが私にそれらを説明できますか? 私はたくさんの Google 検索を行ってきましたが、それらを完全に理解することはできません。
ありがとうございました!
インスタンス変数、クラス変数、およびRubyでのそれらの違いを理解するのに苦労しています...誰かが私にそれらを説明できますか? 私はたくさんの Google 検索を行ってきましたが、それらを完全に理解することはできません。
ありがとうございました!
クラスを定義するとしましょう。クラスは 0 個以上のインスタンスを持つことができます。
class Post
end
p1 = Post.new
p2 = Post.new
インスタンス変数は、特定のインスタンス内でスコープされます。インスタンス変数がある場合title
、各投稿には独自のタイトルがあります。
class Post
def initialize(title)
@title = title
end
def title
@title
end
end
p1 = Post.new("First post")
p2 = Post.new("Second post")
p1.title
# => "First post"
p2.title
# => "Second post"
代わりに、クラス変数はそのクラスのすべてのインスタンスで共有されます。
class Post
@@blog = "The blog"
def initialize(title)
@title = title
end
def title
@title
end
def blog
@@blog
end
def blog=(value)
@@blog = value
end
end
p1 = Post.new("First post")
p2 = Post.new("Second post")
p1.title
# => "First post"
p2.title
# => "Second post"
p1.blog
# => "The blog"
p2.blog
# => "The blog"
p1.blog = "New blog"
p1.blog
# => "New blog"
p2.blog
# => "New blog"