Ruby 中類和類例項變數的區別
Nurudeen Ibrahim
2023年1月30日
讓我們在本教程中瞭解 Ruby 中類變數和類例項變數之間的區別。
Ruby 中類和例項方法的可用性差異
類例項變數只對類方法可用,而類變數對類方法和例項方法都可用。
示例程式碼:
class Parent
@variable1 = "This is a class instance variable"
@@variable2 = "This is a class variable"
def self.class_method
p @variable1
p @@variable2
end
def instance_method
p @variable1
p @@variable2
end
end
Parent.class_method
object1 = Parent.new
object1.instance_method
輸出:
"This is a class instance variable"
"This is a class variable"
nil
"This is a class variable"
上面輸出的前 2 行是從 Parent.class_method
獲得的,而後 2 行是由 object1.instance_method
生成的。正如我們所見,@variable1
在 instance_method
中不可用,因此產生了 nil
。
Ruby 中繼承術語的差異
類例項變數不能傳遞給子類。
示例程式碼:
class Parent
@variable1 = "This is a class instance variable"
@@variable2 = "This is a class variable"
def self.class_method
p @variable1
p @@variable2
end
def instance_method
p @variable1
p @@variable2
end
end
class Child < Parent
end
Child.class_method
object2 = Child.new
object2.instance_method
輸出:
nil
"This is a class variable"
nil
"This is a class variable"