Ruby變數

Ruby變數是用於保存在程式中使用的數據的位置。 每個變數都有不同的名稱。 這些變數名稱基於一些命名約定。 不像其他編程語言,在Ruby中不必先聲明變數再使用。 只需要一個首碼來指示它就可以了。

Ruby中有四種類型的變數:

  • 局部變數
  • 類變數
  • 實例變數
  • 全局變數

1. 局部變數

局部變數名以小寫字母或下劃線(_)開頭。變數可在它的初始化塊內或範圍內訪問。代碼塊完成後,變數就不在作用域存在了。

當未初始化的局部變數被調用時,它們被解釋為對沒有參數的方法的調用。

2. 類變數

類變數名以@@符號開頭。需要在使用前進行初始化。 類變數屬於整個類,可以從類中的任何位置訪問。 如果在一個實例中該值將被更改,則它將在每個實例中被改變。

類變數由類的所有後代共用,未初始化的類變數將導致錯誤。

示例:

創建一個Ruby檔:class-variables.rb,編寫以下代碼 -

#!/usr/bin/ruby

class States
   @@no_of_states=0
   def initialize(name)
      @states_name=name
      @@no_of_states += 1
   end
   def display()
     puts "State name #@state_name"
    end
    def total_no_of_states()
       puts "Total number of states written: #@@no_of_states"
    end
end

# Create Objects
first=States.new("Assam")
second=States.new("Meghalaya")
third=States.new("Maharashtra")
fourth=States.new("Pondicherry")

# Call Methods
first.total_no_of_states()
second.total_no_of_states()
third.total_no_of_states()
fourth.total_no_of_states()

在上面的例子中,@@no_of_states是一個類變數。

執行上面代碼,輸出結果如下:

F:\worksp\ruby>ruby class-variables.rb
Total number of states written: 4
Total number of states written: 4
Total number of states written: 4
Total number of states written: 4

F:\worksp\ruby>

3. 實例變數

實例變數名以@符號開頭。 它屬於類的一個實例,可以從方法中的類的任何實例訪問。 它們只能訪問一個特定的類的實例。

它們不需要初始化,未初始化的實例變數的值是:nil

示例:

創建一個Ruby檔:instance-variables.rb,編寫以下代碼 -

#!/usr/bin/ruby

class States
   def initialize(name)
      @states_name=name
   end
   def display()
      puts "States name #@states_name"
    end
end

# Create Objects
first=States.new("Hainan")
second=States.new("GuangDong")
third=States.new("Beijing")
fourth=States.new("ShangDong")

# Call Methods
first.display()
second.display()
third.display()
fourth.display()

執行上面代碼,輸出結果如下:

F:\worksp\ruby>ruby instance-variables.rb
States name Hainan
States name GuangDong
States name Beijing
States name ShangDong

F:\worksp\ruby>

4. 全局變數

全局變數名以$號開頭。在全局範圍內可訪問,可以從程式中的任何位置訪問它。

未初始化的全局變數的值會被初始化為:nil。建議不要使用全局變數,因為它們使程式變得秘密和複雜。

Ruby中有一些預定義的全局變數。

示例:

創建一個Ruby檔:global-variables.rb,編寫以下代碼 -

#!/usr/bin/ruby

$global_var = "GLOBAL"
class One
  def display
     puts "Global variable in One is #$global_var"
  end
end
class Two
  def display
     puts "Global variable in Two is #$global_var"
  end
end

oneobj = One.new
oneobj.display
twoobj = Two.new
twoobj.display

執行上面代碼,輸出結果如下:

F:\worksp\ruby>ruby global-variables.rb
Global variable in One is GLOBAL
Global variable in Two is GLOBAL

F:\worksp\ruby>

總結

以下是上面幾種類型變數的概括 -

特性 局部變數 全局變數 實例變數 類變數
範圍 僅限於初始化塊內 全局範圍 屬於一個類的一個實例 僅限於創建它們的整個類
命名約定 以小寫字母或下劃線(_)開頭 $符號開頭 @符號開頭 @@符號開頭
初始化 不需要初始化,未初始化的局部變數被解釋為沒有參數的方法 不需要初始化,未初始化的全局變數的值為:nil 不需要初始化,未初始化的實例變數的值為:nil 需要在使用前進行初始化,未初始化的全局變數會導致錯誤。

上一篇: Ruby運算符 下一篇: Ruby數據類型