Ruby基礎筆記2:各種基本對象

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

參考及引用資料

本人不會將以下資料用于商業用途并對其于自己的幫助表示由衷的感謝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372