Ruby變數是用於儲存在程式中使用的資料的位置。 每個變數都有不同的名稱。 這些變數名稱基於一些命名約定。 不像其他程式設計語言,在Ruby中不必先宣告變數再使用。 只需要一個字首來指示它就可以了。
Ruby中有四種型別的變數:
區域性變數名以小寫字母或下劃線(_
)開頭。變數可在它的初始化塊內或範圍內存取。程式碼塊完成後,變數就不在作用域存在了。
當未初始化的區域性變數被呼叫時,它們被解釋為對沒有引數的方法的呼叫。
類變數名以@@
符號開頭。需要在使用前進行初始化。 類變數屬於整個類,可以從類中的任何位置存取。 如果在一個範例中該值將被更改,則它將在每個範例中被改變。
類變數由類的所有後代共用,未初始化的類變數將導致錯誤。
範例:
建立一個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>
範例變數名以@
符號開頭。 它屬於類的一個範例,可以從方法中的類的任何範例存取。 它們只能存取一個特定的類的範例。
它們不需要初始化,未初始化的範例變數的值是: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>
全域性變數名以$
號開頭。在全域性範圍內可存取,可以從程式中的任何位置存取它。
未初始化的全域性變數的值會被初始化為: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 。 |
需要在使用前進行初始化,未初始化的全域性變數會導致錯誤。 |