iT邦幫忙

DAY 14
1

Ruby女孩:10萬.times { puts "為什麼?" }系列 第 14

Ruby女孩(14):在Ruby中,萬事萬物都是物件 => true

  • 分享至 

  • xImage
  •  

從Ruby女孩(5)到Ruby女孩(13),這九篇文章,都在介紹【The Ruby Programming Language】這本書的第三章內容,在這邊說明一下,不然怕大家心裡默默說:我到底看了啥?

【The Ruby Programming Language】
第三章:資料型別與物件
3.1 數字 #Ruby女孩(5)
3.2 文字 #Ruby女孩(6~8)
3.3 陣列 #Ruby女孩(9~10)
3.4 雜湊 #Ruby女孩(11)
3.5 範圍 #Ruby女孩(12)
3.6 符號 #Ruby女孩(13)
3.7 true、false與nil #今天
3.8 物件 #今天提一些

是的,其實我們已經進入這章節的尾聲了,然而這本書還有一百章(誤),照這個進度大概在鐵人賽是寫不完的(遠望)。

好的,尾聲有一個特大主題**『物件』**,在第一次遇到Ruby時,就有前輩跟我說,在Ruby的世界裡,萬事萬物都是物件!哈,這個主題很大,也無敵重要,所以在進入之前我們先來喘口氣,看看3.7的true、false、nil!

※ true、false與nil

『true、false與nil是Ruby的關鍵字(有些人稱保留字)。true與false是兩個布林值,可用來表示真與假、是與非、開與關。nil是一個特殊值專門用於表示不存在。』(p.75)

true不等於1;false不等於0,在Ruby中,true是一個特殊的class

true.class => TrueClass
false.class => FalseClass
1.class => Fixnum
0.class => Fixnum

看到了嗎?真、假與1、0是不一樣的!你也可以注意到,Ruby當中是沒有Boolean類別的!

nil.class => NilClass

當Ruby需要一個Boolean值時,nil的行為如同false,而nil與false之外的就會是true。
.nil? 是一個查詢一個值是否為nil的方法,例如:

a = {:name=>"Annie"} => {:name=>"Annie"}
a[:age].nil? => true
#因為沒有定義:age這個key,所以查詢這個key是不是不存在,執行結果就是true。

好的,看完了真、假與不存在,接下來我們來提一些Ruby中的物件概念。

※ 物件(Object)

『Ruby是一種純物件導向語言:所有的值皆為物件...Ruby中,所有的物件皆繼承自一個名為Object類別,而且共享該類別所定義的方法。』(p.76)

身為一個要追根究底查明真相的初學者,當然不放過這段文字!真的嗎?大家都繼承自Object嗎?我們用 .superclass 這個方法來查查大家的父類別

還記得這個圖嗎?來自Ruby女孩(5)。 .superclass 可以幫類別找它爸爸,例如:

Fixnum.superclass  => Integer
Integer.superclass  => Numeric
Numeric.superclass  => Object #喔喔喔祖先有Object

String.superclass  => Object
Array.superclass  => Object
Hash.superclass  => Object
NilClass.superclass  => Object
TrueClass.superclass  => Object

**上面這些類別爸爸都是Object,有沒有可以直接查所有祖先的方法呢?**有,用 .ancestors ,例如:

Fixnum.ancestors
=> [Fixnum, Integer, Numeric, Comparable, Object, Kernel, BasicObject]

OK,好吧真的證明在Ruby中,萬事萬物都是物件...

路過的阿嬤:『阿都是物件可以幹嘛?』

對吖!到底可以幹嘛?發現接下來的內容有點深,需要一點時間消化...阿嬤我們明天再來研究,Ruby中所有物件的共同特點吧!

=================================================

14天了,今天參加了Github在臺北辦的Patchwork Taipei活動,很振奮,有機會再分享心得,但因此,想到了這句話:

Whenever you see a successful business, someone once made a courageous decision. - Peter Drucker

我也需要勇氣!


上一篇
Ruby女孩(13):到底字串跟符號什麼時候使用比較好?
下一篇
Ruby女孩(15):Ruby物件的生與死
系列文
Ruby女孩:10萬.times { puts "為什麼?" }30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言