Ruby在OO(面向對象,object oriented)上很徹底。在學Python時你會發現object.size()和len(object)兩種表示方法,但是在Ruby中并沒有len()這樣的所謂的built-in function,方法的調用多類似于前者。
Ruby中才是真正的“萬物及對象”。
賦值格式
變量名 = 對象
特殊類型
nil :不存在
簡單的方法:類型轉換
object.to_$
$是類型縮寫,比如
puts 2.to_s
就可以把2轉換成字符串打印(雖然結果差不多)。
基本對象類型
1.數值
Ruby中數值也是對象,分為Fixnum類(整數)和Float類(浮點數)。
最神奇的也是最經典的一個實例再展示一遍
#輸入
3.times { puts "haha" }
#輸出
haha
haha
haha
簡單的運算
#輸入
a = 1 + 1
b = 2 / 3
c = 2 ** 2
d = 5 - 3.14
puts "Result : #{a},#{b},#{c},#5z66vcp"
#輸出
#最后的輸出和浮點數在Ruby底層的運算有關
Result : 2,0,4,1.8599999999999999
可以使用..來表示一個長度范圍內的數字的集合,這是Range類型的對象,在此不再多序。
#輸入
puts 1..5
for i in 1..5
puts "haha"
end
#輸出
1..5
haha
haha
haha
haha
haha
數值對象更多信息可以查閱文檔。
2.字符串
Ruby中字符串可以使用單引號或者雙引號,但是存在差異。
#輸入
print('Hello, \nRuby\n!\n')
puts "-----"
print("Hello, \nRuby\n!\n")
print('Hello, \\ \'Ruby\'.')
#輸出
Hello, \nRuby\n!\n-----
Hello,
Ruby
!
Hello, \ 'Ruby'.
單引號里換行符等特殊字符不經轉義,但是要是想打印出單引號和斜杠還是要加斜杠。
3.符號
符號貌似和字符串很像,符號是由:和字符串緊挨著構成的。
#輸入
a = :b
puts a
p a
#輸入
b
:b
有了字符串為什么還有符號這種類型?
下面的這兩個博客中說的比較詳細。感謝besfanwei的精彩講述。
后面的筆記中會提到部分符號的用法。
4.數組
數組是按序保存對象的對象,是基本的容器。Ruby中的數組可以保存不同類型的對象。
#輸入
info = ["name",1,:haha]
print info
#輸出
["name", 1, :haha]
也可以聲明一個空數組
names = []
Ruby 中數組下標/序從0開始,可以通過賦值改變數組的內容
#輸入
info = ["name",1,:haha]
puts info[0]
puts info[1]
puts info[2]
puts info[3]
print info
puts " "
info[1] = 2
puts info[1]
info[5] = "aloha"
print info
可以看出下標1處值已更改。
有意思的是給下標是5處賦值時,本來沒值的3,4處會生成nil值填補。
#輸出
name
1
haha
# ->無值,打印nil值
["name", 1, :haha]
2
["name", 2, :haha, nil, nil, "aloha"]
可以通過.size方法得到數組長度。
>> info.size
=> 6
可以使用塊(block)遍歷數組,也可以使用 for等循環結構遍歷。
#輸入
info.each do |n|
print n,"-"
end
.each方法是一個帶塊方法,得到了數組的每一個值并且可以使用塊來操作。塊中的變量n為塊變量,每一個值都依次賦給了n。塊在之后的筆記中會提到。
可以看出,不存在的值就沒有打印
#輸出
name-2-haha---aloha-
5.散列
散列類似于Java中的Map,Python中的字典。
散列里面儲存著各種鍵值對。符號字符串數值都可以稱為鍵/值,但是符號為鍵的情況較為一般。
#聲明一個空的散列,非必需
address = {}
#讓address有具體內容
address = { :country => "China","province" => :AH ,1 => 1111 }
取值時一定要在中括號中正確表明鍵的類型
#以下為錯誤示例 ,均會報錯
address[country]
address[province]
address[:1]
#以下也為錯誤示例,但不報錯,返回nil
address["1"]
address[:province]
#為何上面出現了兩種不同結果之后再作說明。
#
#正確的取值方式
puts address[:country]
puts address["province"]
puts address[1]
散列也可這樣聲明,僅限鍵為符號類型
age = {name: "Sato",year: 15}
散列和數組類似,都是動態的,可以通過以下方式加入新鍵值對。
假如已存在,會進行替換
age["haha"] = 3
散列也有.each方法,與數組類似,塊變量含有兩個,也就是鍵&值
#輸入
address.each do |key,value|
puts "#{key}-#{value}"
end
#輸出
country-China
province-AH
1-1111
5.正則表達式
處理正則表達式是Ruby的一大優勢,但是Ruby卻在數據業沒有崛起比較可惜。
/模式/ =~ 希望匹配的字符串 # =~兩者緊密相連
上式返回一個具體的數值,代表匹配的位置。
#輸入
a = /Ruby/i
puts (/Ruby/ =~ "Ruby")
puts (/Ruby/ =~ "ruby")
puts (a =~ "ruby")
puts (/Ruby/ =~ "This is my Ruby")
而且加上i不區分大小寫
#輸出
0
# -> nil
0
11
參考及引用資料
本人不會將以下資料用于商業用途并對其于自己的幫助表示由衷的感謝。