數字:整數 Integer、浮點數 Float
*英文發音
首先來聽聽英文發音~。
名詞解釋
數字型別包含:
- 整數 Integer:可數的,EX:1,2,3,4,5……。
- 浮點數 Float:小數點,EX:3.33。
Ruby世界的數字?
因為Ruby是物件導向的程式語言,大多數看到的皆是「物件」,肉眼看起來像數字外觀的數字也是物件的一種唷。
△肉眼觀世間,曖昧難辨
1 | puts 1 + 2 |
以上看起來簡簡單單的加法運算,但其實加號在Ruby中只是一般的方法(method),省略了小括號。
原來的樣子應該是如下:
1 | puts 1.+(2) |
這個加號,事實上是「數字物件 1」呼叫了「+」這個方法,並且把「數字物件 2」當做參數傳進去。也因為他是一個方法,所以也可以重新改寫它原來的功能,讓 1 + 1 不等於 2 都是有可能的。
浮點數轉整數
1 | puts 3.33.round #轉成整數,四捨五入 |
型別轉換 Conversions
字串可以使用以下轉型方法:
1 | to_i: 轉整數 |
如下範例:
1 | p "169.99cm".to_f # 169.99 |
整數除法
因為Ruby是物件導向程式語言,看過去的東西大多為物件,因此在Ruby世界裡面,整數除以整數會得到整數10/3 == 3
。
*那要如何得到小數點?
除數或被除數其中一個改小數點即可!
1 | 10.0/3 == 3.333333 |
符號 Symbol
*英文發音
首先來聽聽英文發音~。
https://youtu.be/EJg47hnavNM
名詞解釋
在了解符號之前,先來加深「物件」的概念。在Ruby的世界裡,看到的大多是物件,如以下:
1000
:數字物件"World peace"
:字串物件:vegan
:符號物件
由以上可以得知,「符號 Symbol」使用冒號:
開頭,他類似一種無法修改的字串,我們會說他是「有名字的物件 an object with a name」。
要注意的是,「符號」不是「變數」,是值,本身不會只向任何東西。
1 | # 「變數」可以指向 |
*那字串跟符號哪裡不一樣?
字串的效能會比符號差了一點點,兩者最主要的差異在於「記憶體的管理方式」,由於 Ruby中的每個字串都是新的物件,所以即使是相同的字串也會佔用不同的記憶體,而符號則是重復利用:
1 | puts "string".object_id # 2157007700 <- 不同記憶體位置 |
*不可變(immutable)的特性?
符號具有不可變的特性,字串可以改變值,符號不行。
可由以下例子得知:
1 | name = "abcde" |
*符號的功用是什麼呢?
因為以上的特性,讓符號在Ruby中主要用作hash的鍵(key)或者是用來指稱方法的名稱。
1 | hash = {:key => "12345", :symbol => "string"} |
總整理
- immutable:被建立後就不能改變。
- 任何「符號」都指稱到同一個記憶體位置,因此較省記憶體。
- 以「符號」當作鍵(key)的效能會比「字串」當作鍵的效能來得好。
回家作業
請回答以下問題:
1 | 1.請問符號是什麼?跟變數一樣嗎? |
參考資料
- 更多的衍伸用法,可以參考龍哥的書《為你自己學 Ruby on Rails》:數字、字串、陣列、範圍、雜湊、符號
- 小殘的程式光廊:Ruby教學 - 符號(Symbol)
- PJCHENder 未整理筆記Symbol(符號)
本文於 2020-09-12 發表在舊網站。