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 需要在使用前進行初始化,未初始化的全局變量會導致錯誤。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 關于變量和方法的二義性辯論 首先先看個類 兩個疑問1、為啥 ‘1’處會有輸出,但是‘4’處沒有輸出?2、為啥 ‘2...
    AQ王浩閱讀 502評論 0 2
  • 局部變量:以英文字母或_開頭 全局變量:以$開頭 實例變量:以@開頭 類變量:以@@開頭 常量:以英文大寫字母開頭...
    安于然閱讀 491評論 0 0
  • 這個月和小伙伴們一起讀了洛里?斯皮爾曼著,吳春玲,薛雨辰譯的《生命清單》。感覺收獲很大,而且在臨近年尾之際更有實際...
    慧眼識魚閱讀 1,384評論 2 10
  • 歲月不待人,及時當勉勵。時間是什么?時間就是你站在虛掩的門后,看著駿馳的白馬,穿越這道門隙。等你緩過神來,它已經不...
    人在南京閱讀 361評論 0 2
  • 早上在朋友圈看到了一位朋友完成了她的第二個90計劃,她說沒有第一個完成時那樣有有驚喜感,但還是很有成就。 想到自己...
    heureusefay閱讀 222評論 0 0