Ruby 教學 - 資料型態 (Data Type)
Ruby 的物件導向
由於 Ruby 是個完全物件導向的語言,它不像其他語言使用原始型別 (primitive types),例如 int, bool 之類的型別,所有的實字 (literal) 都會被解析成對應的物件來使用。
從上圖可以看到物件的階層關係,所有型別皆繼承自物件 (Object),甚至是模組 (Module) 和類別 (Class)。
之後幾篇文章將逐一介紹一些主要的型別,包含以下項目:
- 字串(String)
- 符號(Symbol)
- 數字(Numeric)
- 整數(Integer)
- 浮點數(Float)
- 陣列(Array)
- Hash
- 範圍(Range)
- Nil
- True
- False
物件類別
所有型別都是物件,可以利用 class
的屬性來查看物件型別:
1 | puts "Hello".class # String |
型別的判斷
Ruby 提供 is_a?
和 kind_of?
的函式來判斷是否屬於某種類別之下,功能是完全一樣的:
1 | puts "Hello".is_a? String # true |
另外還有一個函式 instance_of?
來判斷是否正好是某個類別:
1 | puts 1.1.instance_of? Numeric # false |
轉型
Ruby 中進行轉型是透過的物件提供的函式來達成,常見的有以下幾種:
- to_s:轉成字串 (String)
- to_i:轉成整數 (Integer)
- to_f:轉成浮點數 (Float)
- to_a:轉成陣列 (Array)
- to_h:轉成 Hash
- …
例如
1 | p 1.1.to_s # "1.1" |
並不是所有型別的可以互相轉換,視情況而定,另外一點特別的是,Ruby 中沒有布林型別,但是仍可利用以下方法強制轉型成 true
或 false
:
1 | puts !!false # false |
從上面的例子可以發現一個重要的事情:Ruby 中只有 false
和 nil
是判斷為 false
。
延伸閱讀
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment