實例變數(Instance Variable)是什麼?

實例變數是在類別(class)中,可以讓所以的方法(method)共用一個變數,且變數的值(value)會根據各個方法而儲存不同的值。

實例變數(Instance Variable)的使用條件

必須將物件(object)實體化(initialize)後才能使用。可以想成是玩遊戲時有角色這個東西(object),但是你必須創角色(initialize)後才能使用。

在Ruby定義實例變數

Ruby的實例變數定義只要在變數前加上「@」即可。

  
    @instance_variable = "Instance_Variable"
  

Ruby實例變數使用方法

  
    class hane
    <span class="com"># 宣告類別</span>
      def instance
       @instance_variable = "instance_variable"  <span class="com"># 在方法內宣告</span>
       p @instance_variable
      end
    end
  

類別變數(Class Variable)是什麼?

可以讓同一個類別(class)以及其子類別中所有的方法共用的一個變數。但類別變數值是可以改變的,當值改變時,所有的方法將都會受到影響。

在Ruby定義類別變數

Ruby的類別變數定義只要在變數前加上「@@」即可。

  
    @@class_variable = "Class_Variable"
  

Ruby類別變數使用方法

  
    class hane  <span class="com"># 宣告類別</span>
      @@class_variable = 0  <span class="com"># 在方法外宣告類別變數</span>
      def class_var
       @@class_variable += 1  <span class="com"># 改變類別變數的值</span>
       p @@class_variable    <span class="com"># 將會輸出「1」</span>
      end
    end

    class hanejapan < hane  <span class="com"># 宣告hane的子類別</span>
      def class_var_2
       p @@class_variable  <span class="com"># 依舊輸出「1」,因為類別變數已被母類別更改。</span>
      end
    end
  

類別實例變數(Class Instance Variables)是什麼?

不確定有沒有翻錯,可以讓同一個類別(class)中共同使用的一個變數。與類別變數不同的是,子類別無法繼承其值。

在Ruby定義類別實例變數

Ruby的類別實例變數定義與實例變數一樣,只要在變數前加上「@」即可。但是宣告的地方不同。

  
    @class_instance_variable = "Class_Instance_Variable"
  

Ruby類別實例變數使用方法

  
    class hane  <span class="com"># 宣告類別</span>
      @class_instance_variable = "Japan"  <span class="com"># 在方法外宣告類別實例變數</span>
      def class_inst_var
       p @class_instance_variable    <span class="com"># 將會輸出「Japan」</span>
      end
    end

    class hanejapan < hane  <span class="com"># 宣告hane的子類別</span>
      def class_inst_var_2
       p @class_instance_variable    <span class="com"># 將會輸出「nil」。因為值並沒有被繼承。</span>
      end
    end