Ruby 中類和類例項變數的區別

Nurudeen Ibrahim 2023年1月30日 2022年5月18日
  1. Ruby 中類和例項方法的可用性差異
  2. Ruby 中繼承術語的差異
Ruby 中類和類例項變數的區別

讓我們在本教程中瞭解 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 生成的。正如我們所見,@variable1instance_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"

相關文章 - Ruby Class