先說常量。如果變數名以大寫字母開頭,就被視為常量,但通常是所有字母都大寫。但和其他語言不同,在ruby中,你仍然可以改變常量的值,當然直譯器會丟擲乙個警告:
view plain
#! /usr/bin/ruby
constant = 1
print "#/n"
constant += 1
print "#/n"
這段**定義了乙個名為constant的常量,並初始化為1。然後對其的改動卻是被允許的,但直譯器會丟擲乙個如下所示的警告:
./2.rb:4: warning: already initialized constant constant
現在開始看變數。在ruby中,變數都是「無型別」的,不用指定其具體型別,直譯器會根據其值自行判斷。但ruby也提供了一些方法來判斷變數的當前型別:
view plain
"#/n"
print "#/n"
第一行**列印變數1的型別(還記得在ruby中,一切都是物件吧?!),第二行則是列印1是否是integer的結果。
同時,ruby還提供了一些函式進行變數型別的轉換,如整數可呼叫to_f函式轉化為浮點數、呼叫to_s函式轉化為字串等等。
在ruby中,變數的作用域有以下四種型別(姑且讓我用c++的術語描述):以$開頭的全域性變數、以@@開頭的類靜態變數、以@開頭的類成員變數,以及無字首的區域性變數。對於常量,如果其在類中定義,則其作用域為該類;否則為全域性常量。
簡單的說下ruby裡的數字。在ruby中,integer是整數的基類,和機器字長相同的整數則用fixnum類表示,大整數則會自動轉化為bignum型別。雙精度浮點數則用float類表示,有理數則用rational類表示。
然後看看陣列。ruby中的陣列用array類表示,其中每個元素都可以是任意型別的物件。陣列的第乙個元素下標為0,最後乙個元素則可用下標-1來訪問。
#! /usr/bin/ruby
arr1 = ["ele1"
, 2,
"ele3"
] arr2 = ["ele4"
, arr1]
arr3 = arr1 + arr2
print "# #/n"
print "# #/n"
print "# #/n"
這裡,第乙個陣列arr1包含3個元素:字串ele1、數字2和字串ele3;第二個陣列arr2包含2個元素:字串ele4和陣列arr1的乙個引用;第3個陣列arr3則包含了頭兩個陣列的引用。注意,這裡都是傳遞的引用,而不是拷貝得到了乙個新的物件。最後列印3個陣列的長度,以及arr1的最後乙個元素。
ruby的陣列長度可以動態改變:
arr =
array
.new
# 下面兩個等價語句都是將元素新增到陣列最後
arr << "ele1"
arr.push(2)
# 這時陣列為["ele1", 2]
# 插入到指定位置
arr.insert(0, "ele0"
) # 這時陣列為["ele0", "ele1", 2]
# 返回並刪除最後乙個元素
arr.pop
# 這時陣列為["ele0", "ele1"]
# 刪除指定位置的元素
arr.delete_at(0)
# 這時陣列為["ele1"]
# 刪除指定的元素
arr.delete("ele1"
) # 這時陣列為
ruby還提供了陣列的集合操作:
arr1 = [1, 2, 3]
arr2 = [2, 3, 4]
arr4 = arr1 - arr2 # [1]
arr5 = arr1 & arr2 # [2, 3]
arr6 = arr1 | arr2 # [1, 2, 3, 4]
此外,ruby還提供了針對陣列的排序(sort、reverse)和去除重複元素(uniq)等操作。
最後看看ruby中的操作符。這裡只簡單說說和c/c++不同的部分。ruby中提供了計算冪的運算子**(例如2**8的結果為256),以及平行賦值(例如a, b, c = 1, 2, 3將a、b、c分別賦值為1、2、3)、<=>(相等返回0,大於返回1,小於返回-1),但取消了++和--兩個運算子。並且,ruby中可以使用and(或&&)、or(或||)和not(或!)來進行邏輯運算。
分享到: 完
Shell初學(二)變數及陣列
精簡版 定義 your name 123 ps 符號左右不能有空格!使用 單獨使用變數時可以不加 唯讀 readonly your name ps 設定為唯讀後不可刪除 刪除 unset your name 引號 單引號顯示實質內容,雙引號可以拼接字串並且可以使用轉義字元 大小 可以檢視變數所佔大小...
一步一步學Ruby 二 變數,常量
本文內容 一 變數 1.變數定義無需指定型別 2.只能包含字母 數字 下劃線,但只能以字母或下劃線開頭x,y2,mcount二 變數範圍1.區域性變數以小寫字母或下劃線開頭的識別符號在 ruby 中即為區域性變數 如果引用未被宣告的識別符號則會被解釋成無引數的方法呼叫 區域性變數只在 段類有效2.全...
一步一步學Ruby 二 變數,常量
本文內容 一 變數 1.變數定義無需指定型別 2.只能包含字母 數字 下劃線,但只能以字母或下劃線開頭x,y2,mcount二 變數範圍1.區域性變數以小寫字母或下劃線開頭的識別符號在 ruby 中即為區域性變數 如果引用未被宣告的識別符號則會被解釋成無引數的方法呼叫 區域性變數只在 段類有效2.全...