SlideShare a Scribd company logo
1 of 58
Download to read offline
Ruby女孩:
10萬.times { puts "為什麼?" }
Annie Chen
5
6
WhoamI?
Annie Chen
Rails Girls Taipei 3rd 學員
Rails Girls Taipei 4th, 5th 教練
Rails ⼯工程師 @ i-True
數學⽼老師
3月 8月7月6月5月4月 9月 10月 11月 12月
第⼀一次成為
RailsGirls
參加LTRT
開始練功
撞牆期
我到底想學什麼?
找專案練習
⾃自我驗收
RailsGirls
校園推廣
RailsGirls
教練初體驗
A Ruby Week
in Japan
iT鐵⼈人賽挑戰
Ruby ⼥女孩
I got a job!
Share
⽇日本⼼心得
In 2014…
這些都是我
Annie
安妮
facebook: @OtiAnn
github: @OtiAnn
twitter: @_OtiAnn
blog: blog.annideas.com
2014/10/1 ~ 2014/10/30 連續不中斷 分享IT文章
http://blog.annideas.com/ironman7
My 30 Days…
前情提要
http://www.slideshare.net/AnnieChen51/ruby46
This time…
有帶電腦來嗎?
可以邊聽邊練習~~
等等連上這裡(⼆二擇⼀一)
(1) repl.it
(2) tryruby.org
Ruby⼥女孩(21):
來聽聽
類別變數 與 類別實體變數
的⾃自⽩白(?)
圖⽚片出⾃自:⽇日本⼈人⼒力公司 リクナビ NEXT
※變數的種類
1. 區域變數	 => 以⼩小寫字⺟母或「_」起始來命名
2. 全域變數	 => 以「$」符號起始命名
3. 實體變數	 => 以「@」符號起始命名
4. 類別變數	 => 以「@@」符號起始命名
5. 虛擬變數	 => 「true」、「false」、「self」等特定命名
參考連結:http://rpg0822.pixnet.net/blog/trackback/4af0107c68/2275001
區域變數 vs 實體變數
Test.new.method_2會噴錯!
因為區域變數只活在⽅方法中!
Test.new.method_2不會噴錯!
因為實體變數活在實體中!
實體變數 vs 類別變數
實體變數活在實體上 類別變數活在類別上
把類別變數與實體變數寫在⼀一起的話...
全域變數
有錢的就是⽼老⼤大!
Ruby⼥女孩(22):
公⽤用、受保護、私⽤用⽅方法
⼤大亂⾾鬥
圖⽚片出⾃自:⽇日本⼈人⼒力公司 リクナビ NEXT
※先來看看公⽤用(public)、受保護(protected)、私⽤用(private)
這三種⽅方法都寫在什麼位置:
※也可以這麼寫:
※公⽤用(public)⽅方法
1. 沒有特別說明,⽅方法預設都是public的!
2. 基本上第⼀一點是正確的,但有⼀一個例外,initialize⽅方法,會被⾃自動
宣告成private的。
※公⽤用(public)⽅方法
3. 基本上前⾯面都是對的,但還有⼀一個例外XD,就是當⼀一個⽅方法被定
義在類別之外,它會直接被宣告成Object的私⽤用實體⽅方法。
※私⽤用(private)⽅方法
1. private⽅方法僅供該類別內部使⽤用,它只能讓該類別(或它的⼦子類別)
中的實體⽅方法所呼叫。
2. private⽅方法被調⽤用時會⾃自動在self上進⾏行,無法⽤用⼿手動的⽅方式在某
物件上進⾏行。
注意!上⾯面的程式碼有錯!
my_age會⾃自動在self上進⾏行,因此前⾯面不需要再加上self.
※私⽤用(private)⽅方法
1. private⽅方法僅供該類別內部使⽤用,它只能讓該類別(或它的⼦子類別)
中的實體⽅方法所呼叫。
2. private⽅方法被調⽤用時會⾃自動在self上進⾏行,無法⽤用⼿手動的⽅方式在某
物件上進⾏行。
這⾴頁的程式才是對的~
※私⽤用(private)⽅方法
3. 統整兩點的規則,如果aaaaaa是⼀一個private⽅方法,那只能直接⽤用
aaaaaa這種⽅方式來呼叫它,不能⽤用oooo.aaaaaa或self.aaaaaa來呼叫
它。[註: oooo為物件名]
※受保護(protected)⽅方法
1. 與private⽅方法相似,都只能被⽤用在類別或⼦子類別的實體⽅方法中。
2. 跟private不同之處,在於protected可以⽤用oooo.method或self.method
來呼叫它。[註: oooo為物件名]
※三種⽅方法⼤大亂⾾鬥
※三種⽅方法⼤大亂⾾鬥
延伸閱讀:Public, Protected and Private Method in Ruby-⾼高⾒見⻯⿓龍
Ruby⼥女孩(23):
Ruby中的繼承者們!
有錢真好(誤)
圖⽚片出⾃自:⽇日本⼈人⼒力公司 リクナビ NEXT
※建⽴立⼦子類別
通常我們如果需要建⽴立⼦子類別(subclass),都是為了要沿⽤用⽗父類別
(superclass)的⽅方法,然後再擴充⾃自⼰己的⽅方法。
(你知道的,通常⽗父⺟母都會把⾃自⼰己的全部送給孩⼦子,然後孩⼦子⾃自⼰己
再去發展⾃自⼰己的事業XD)
還記得...
現在我們要⾃自⼰己寫⼀一個⼦子類別
※建⽴立⼦子類別
很簡單我們只需要⼀一個『<』符號就好了
上⾯面將RubyGirl定義成是Girl的⼦子類別,
所以RubyGirl會有所有Girl的⽅方法!
※建⽴立⼦子類別
例如:
1. 在Girl這個類別定義⾝身⾼高、體重
2. annie是RubyGirl類別的實體物件
3. annie初始化時也可以使⽤用Girl類
別中的⽅方法
※建⽴立⼦子類別
當然,因為RubyGirl繼承Girl,所以
annie也享有說話這個⽅方法!
※ 覆寫⽅方法
有時候,孩⼦子可能不太喜歡⽗父⺟母的
規定~
例如:annie的talk並不想要這麼死
板XD,那RubyGirl這個類別可以做些
修改來重新定義⽗父⺟母的⾏行為。
※當繼承遇到公⽤用、受保護、私⽤用⽅方法
先來看看爸爸:
※當繼承遇到公⽤用、受保護、私⽤用⽅方法
再來看看兒⼦子:
※當繼承遇到公⽤用、受保護、私⽤用⽅方法
繼承者完全可以使⽤用⽼老爸的公⽤用、受保護、私⽤用⽅方法!
Ruby⼥女孩(24):
模組是不⽣生孩⼦子的!
模組與類別差異及mixin介紹
圖⽚片出⾃自:⽇日本⼈人⼒力公司 リクナビ NEXT
※模組(module)
模組(module)是⼀一個很容易跟類別(class)搞混的名稱!我們先下⼀一
⾏行指令來看看這兩者之間的關係:
類別是模組的⼩小孩,模組能做的類別都能做!
那...類別這⼩小孩⽐比他⽼老爸模組還擴充了哪些⽅方法呢?
※模組(module)
類別只⽐比模組多了三個⽅方法:allocate, new, superclass
1. 模組不可以做出實體物件,所以不能使⽤用.allocate與.new[註1]。
2. 模組之間也不能被繼承,所有的模組之間都是獨⽴立的,不⽣生孩⼦子(不
能建⽴立⼦子模組)!
※[註1].allocate是什麼?
當我們幫Test類別建造實體物件時...
1. 使⽤用.new,會分配空間給新物件,並調⽤用類別中的initialize⽅方法。
2. 使⽤用.allocate,會分配空間給新物件,但不會調⽤用initialize⽅方法。
[參考資料]http://apidock.com/ruby/Class/allocate
※模組的mixin⽤用法
『如果⼀一個模組定義的是實體⽅方法,⽽而不是類別⽅方法,這些實體⽅方法
可以混進(mix in)其他類別。...欲將⼀一個模組混進⼀一個類別,可以使⽤用
include。』(p.260)
※模組的mixin⽤用法
回憶過去...
※模組的mixin⽤用法
1. mixin所使⽤用的include,只能include模組,不能include類別。
2. 類別可以include模組,模組也可以include模組。
要混⼊入模組的⽅方法除了『include』,也可以使⽤用『extend』。如果
是在類別中寫『extend 模組』,該模組的實體⽅方法將轉變成類別
的類別⽅方法:
Ruby⼥女孩(25):
來認識⽅方法的定義與解除!
圖⽚片出⾃自:⽇日本⼈人⼒力公司 リクナビ NEXT
※定義簡單的⽅方法
⽅方法的定義會使⽤用def關鍵字,def後⾯面空⼀一格接⽅方法的名稱,名稱
旁接著圓括號,圓括號中可放⼊入參數,後⽅方再接著⽅方法的內容,
最後以end關鍵字為結尾。
1. 圓括號通常可省略,但也有不可省略之時,待後⾯面再做解釋。
2. 圓括號中的參數,可直接作為⽅方法程式碼中的變數。
※⽅方法的回傳值
所定義的⽅方法如果能夠正常執⾏行,會⾃自動以⽅方法的最後⼀一個運算
式來當作回傳值。
※⽅方法的回傳值
⽅方法中若加⼊入return關鍵字,則是強制讓此⽅方法直接跳到結尾。
※⽅方法的回傳值
也可以在return後⽅方加⼊入判斷式:
※調⽤用物件的⽅方法
⽅方法的調⽤用總是針對⼀一個物件來進⾏行,我們前⾯面在調⽤用⽅方法時,
都會在某物件後⾯面加上『.⽅方法』,物件通常被稱為接收器,⽽而⽅方
法稱為訊息,⽽而Ruby都是使⽤用『.』來分隔物件與⽅方法。
※解除⽅方法的定義
我們⽤用def定義⼀一個⽅方法,可以⽤用undef來解除⽅方法的定義。
這種⽅方式不常⽤用,通常都是定義新的⽅方法來使⽤用,⽽而⾮非刪除舊的
⽅方法。
~練習時間~
~觀察以下程式碼~
回答後⾯面附上的問題XD
Q1. Mom.give_birth_to_a_child會..?
(a) ⽣生出⼀一個Child的實體,並說⽣生孩
⼦子好⾟辛苦啊~
(b) 噴錯!give_birth_to_a_child是實
體⽅方法,不能直接⽤用Mom去調⽤用
Q2. 最剛開始什麼都沒做時,
Child.count會..?
(a) 回傳0
(b) 回傳nil
Q3. 承上,gaga = Child.new後,
Child.count會..?
(a) 回傳1
(b) 回傳0
Q4. 承上,gaga.grow_up後,
gaga.age會..?
(a) 回傳1
(b) 回傳0
Q5. 第18⾏行,talk_word是..?
(a) 區域變數的名字
(b) 私⽤用⽅方法的名字
Q6. 想出兩種讓Child.count得值變成2
的⽅方式~
(a) 我想到了
(b) 我想不到XD
Q7. gaga和haha都是Child的實體,
gaga.grow_up後,haha會..?
(a) 哈哈什麼事也沒發⽣生
(b) 跟嘎嘎⼀一起年齡+1
Q8. gaga能不能也
give_birth_to_a_child?
(a) 少來了,孩⼦子怎麼能⽣生孩⼦子
(b) 可以啊~
⼤大師與新⼿手之間的差別,
就是⼤大師失敗過的次數,
⽐比新⼿手嘗試過的次數還多。
To be continued…
Next time…
Ruby女孩5/6

More Related Content

Viewers also liked

Pasar Saham - 16 Support dan Resistance
Pasar Saham - 16 Support dan ResistancePasar Saham - 16 Support dan Resistance
Pasar Saham - 16 Support dan ResistanceKuliahKita
 
10 need to-know things about earth
10 need to-know things about earth 10 need to-know things about earth
10 need to-know things about earth hellyeahyeah
 
mastery journey timeline
mastery journey timelinemastery journey timeline
mastery journey timelineErik Mooij
 
Real Club de Golf el Prat
Real Club de Golf el PratReal Club de Golf el Prat
Real Club de Golf el Pratjwebelliott
 
High Connect S.A./ introduction
High Connect S.A./ introductionHigh Connect S.A./ introduction
High Connect S.A./ introductionTassos Tiniakos
 
Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01KuliahKita
 
Kriptografi - Stream Cipher
Kriptografi - Stream CipherKriptografi - Stream Cipher
Kriptografi - Stream CipherKuliahKita
 
Matematika Diskrit - 09 graf - 04
Matematika Diskrit - 09 graf - 04Matematika Diskrit - 09 graf - 04
Matematika Diskrit - 09 graf - 04KuliahKita
 
Pasar Saham - 05 IPO Market 2
Pasar Saham - 05 IPO Market 2Pasar Saham - 05 IPO Market 2
Pasar Saham - 05 IPO Market 2KuliahKita
 
Technology and Science News - ABC News
Technology and Science News - ABC NewsTechnology and Science News - ABC News
Technology and Science News - ABC Newstalloration5719
 
Politics News and U.S. Elections Coverage
Politics News and U.S. Elections CoveragePolitics News and U.S. Elections Coverage
Politics News and U.S. Elections Coveragetalloration5719
 
Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...
Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...
Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...Chloé Bois
 
Algoritma dan Struktur Data - Persiapan Kakas C++
Algoritma dan Struktur Data - Persiapan Kakas C++Algoritma dan Struktur Data - Persiapan Kakas C++
Algoritma dan Struktur Data - Persiapan Kakas C++KuliahKita
 
사포교회 코이노니아
사포교회 코이노니아사포교회 코이노니아
사포교회 코이노니아Emptinessinmyheart
 

Viewers also liked (16)

Pasar Saham - 16 Support dan Resistance
Pasar Saham - 16 Support dan ResistancePasar Saham - 16 Support dan Resistance
Pasar Saham - 16 Support dan Resistance
 
10 need to-know things about earth
10 need to-know things about earth 10 need to-know things about earth
10 need to-know things about earth
 
mastery journey timeline
mastery journey timelinemastery journey timeline
mastery journey timeline
 
Real Club de Golf el Prat
Real Club de Golf el PratReal Club de Golf el Prat
Real Club de Golf el Prat
 
High Connect S.A./ introduction
High Connect S.A./ introductionHigh Connect S.A./ introduction
High Connect S.A./ introduction
 
Digital Citizenship
Digital CitizenshipDigital Citizenship
Digital Citizenship
 
Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01
 
Kriptografi - Stream Cipher
Kriptografi - Stream CipherKriptografi - Stream Cipher
Kriptografi - Stream Cipher
 
Osterhoudt vacation
Osterhoudt vacationOsterhoudt vacation
Osterhoudt vacation
 
Matematika Diskrit - 09 graf - 04
Matematika Diskrit - 09 graf - 04Matematika Diskrit - 09 graf - 04
Matematika Diskrit - 09 graf - 04
 
Pasar Saham - 05 IPO Market 2
Pasar Saham - 05 IPO Market 2Pasar Saham - 05 IPO Market 2
Pasar Saham - 05 IPO Market 2
 
Technology and Science News - ABC News
Technology and Science News - ABC NewsTechnology and Science News - ABC News
Technology and Science News - ABC News
 
Politics News and U.S. Elections Coverage
Politics News and U.S. Elections CoveragePolitics News and U.S. Elections Coverage
Politics News and U.S. Elections Coverage
 
Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...
Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...
Bringing Intelligence to Everything - ICI - Printability and Graphic Communic...
 
Algoritma dan Struktur Data - Persiapan Kakas C++
Algoritma dan Struktur Data - Persiapan Kakas C++Algoritma dan Struktur Data - Persiapan Kakas C++
Algoritma dan Struktur Data - Persiapan Kakas C++
 
사포교회 코이노니아
사포교회 코이노니아사포교회 코이노니아
사포교회 코이노니아
 

Ruby女孩5/6