數據類型
- Number 數值型
整型( Fixnum ), 浮點型(Float ) - String 字符串型
類* String* 的對象。雙引號標記的字符串允許替換和使用反斜線符號,單引號標記的字符串不允許替換,且只允許使用 \ 和 ' 兩個反斜線符號。
可以使用序列#{expr}
替換任意 Ruby 表達式的值為一個字符串。 - Ranges 范圍型
一個范圍表示一個區間,通過設置一個開始值和一個結束值來表示。
使用 s..e構造的范圍從開始值運行到結束值(包含結束值)。
使用 s...e構造的范圍從開始值運行到結束值(不包含結束值)。
當作為一個迭代器使用時,范圍會返回序列中的每個值。 - Symbols
:symbol
它適合于在程序中多次重復使用的自定義變量。
無論該符號被使用了多少次,在Memory內都只有一個symbol。 - true、false和nil
- Array 數組
數組字面量通過[]中以逗號分隔定義,且支持range定義。
(1)數組通過[]索引訪問
(2)通過賦值操作插入、刪除、替換元素
(3)通過+,-號進行合并和刪除元素,且集合做為新集合出現
(4)通過<<號向原數據追加元素
(5)通過*號重復數組元素
(6)通過|和&符號做并集和交集操作(注意順序) - Hash
Ruby 哈希是在大括號內放置一系列鍵/值對,鍵和值之間使用逗號和序列 => 分隔。
尾部的逗號會被忽略。
變量
在 Ruby 中,可以通過在變量或常量前面放置 # 字符,來訪問任何變量或常量的值。
- 全局變量(Global variable)
- 全局變量以 $ 開頭。未初始化的全局變量的值為 nil。
- 給全局變量賦值會改變全局狀態。
- 實例變量(Instance variable)
實例變量以 @ 開頭。未初始化的實例變量的值為 nil。 - 類變量(Class variable)
- 類變量以 @@ 開頭,且必須初始化后才能在方法定義中使用。
- 類變量在定義它的類或模塊的子類或子模塊中可共享使用。
- 引用一個未初始化的類變量會產生錯誤。
- 局部變量(Local variable)
- 局部變量以小寫字母或下劃線 _ 開頭。
- 局部變量的作用域從 class、module、def 或 do 到相對應的結尾或者從左大括號到右大括號 {}。
- 當調用一個未初始化的局部變量時,它被解釋為調用一個不帶參數的方法。
- 對未初始化的局部變量賦值也可以當作是變量聲明。
- 局部變量的生命周期在 Ruby 解析程序時確定。
- 常數(Constant)
- 常量以大寫字母開頭,不能定義在方法內。
- 定義在類或模塊內的常量可以從類或模塊的內部訪問,定義在類或模塊外的常量可以被全局訪問。
- 引用一個未初始化的常量會產生錯誤。
- 訪問方法
#{variable}
條件判斷
-
if...else
語句
值 false 和 nil 為假,其他值都為真。
如果 conditional 為真,則執行 code。如果 conditional 不為真,則執行 else 子句中指定的 code。
if conditional [then]
code...
[elsif conditional [then]
code...]...
[else
code...]
end
-
if
修飾符
如果 conditional 為真,則執行 code。
code if condition
-
unless
語句
和 if式作用相反,即如果 conditional 為假,則執行 code。如果 conditional 為真,則執行 else 子句中指定的 code。
unless conditional [then]
code
[else
code ]
end
-
unless
修飾符
如果 conditional 為假,則執行 code。
code unless conditional
-
case
語句
case先對一個 expression 進行匹配判斷,然后根據匹配結果進行分支選擇。
它使用 ===運算符比較 when 指定的 expression,若一致的話就執行 when 部分的內容。
case expression
[when expression [, expression ...] [then]
code ]...
[else
code ]
end
注釋
單行注釋以 # 字符開始,直到該行結束。
# 這是一個單行注釋。
多行注釋以=begin 和 =end 語句包含。
=begin
這是一個多行注釋。可擴展至任意數量的行。
=end
循環
-
while
語句:當 conditional 為真時,執行 code。
while conditional [do]
code
end
語法中 do 可以省略不寫。但若要在一行內寫出 while 式,則必須以 do 隔開條件式或程式區塊。
-
while
修飾符:當 conditional 為真時,執行 code。
# 方法一:
code while condition
# 方法二:
begin
code
end while conditional
code 會在 conditional 判斷之前執行一次。
-
util
語句:當 conditional 為假時,執行 code。
until conditional [do]
code
end
-
util
修飾符:當 conditional 為假時,執行 code。
# 方法一:
code until conditional
# 方法二:
begin
code
end until conditional
code 會在 conditional 判斷之前執行一次。
-
for
語句:
先計算表達式得到一個對象,然后針對 expression 中的每個元素分別執行一次 code。
for variable [, variable ...] in expression [do]
code
end
示例:允許 i 的值從 0 到 5(包含 5)。
for i in 0..5
code
end
for 循環不會為局部變量創建一個新的作用域。
-
each
語句
針對 expression 中的每個元素分別執行一次 code。
(expression).each do |variable[, variable...]|
code
end
-
break
,next
語句
break
:終止最內部的循環。
next
:直接跳到循環的下一個迭代。 -
redo
語句:重新開始最內部循環的該次迭代,不檢查循環條件。