其實前面幾篇很明顯顯示,Rudy用def來產生一個方法。
def 方法名稱(參數)
#流程控制區, 解題實作區
end
put 方法名稱(參數)
#參數可複數,但執行方法給的數目要一樣。
先來看一個簡單的範例
2.7.3 :108 > def k_pop(song)
2.7.3 :109 > "Let Dance! #{song}" #小衍生題''與" "的差異。
2.7.3 :110 > end #108-110為一個方法。
=> :k_pop #在Interactive Ruby Shell(irb)定義好後,用一個符號來記憶(記得符號與字串差異嗎?)
2.7.3 :111 > k_pop("Hands up!") #與很多語言類似,方法名加參數執行方法
=> "Let Dance! Hands up!" #還記得執行方法都會有回傳值這件事嗎?
再稍稍加工一下
2.7.3 :112 > puts k_pop("Hands up!")
Let Dance! Hands up!
=> nil
2.7.3 :113 > p k_pop("Hands up!")
"Let Dance! Hands up!"
=> "Let Dance! Hands up!"
請於前篇一起服用,就也是我在分享定義方法時,要先分享p與puts差異。當然也有可能,我比較笨,會一直亂加p與puts
好了定義方法跟流程控制已經學完了XD!我們先進入迴圈。
但是在程式語言中,使用迴圈語法有幾件很重要的事。
設立終止條件
2.7.3 :120 > shake_it = 0
=> 0
2.7.3 :121 > while shake_it < 8 #這便是終止條件
2.7.3 :122 > puts "Rollin'" #沒達到條件前要做什麼事
2.7.3 :123 > shake_it += 1 #每執行一次 + 1
2.7.3 :124 > end
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
# += ,其他語言不一定有的特殊寫法, a = a + 1 可寫作 a += 1。
# 如果還沒離開irb請輸入 puts shake_it 看看發生什麼事。
Ruby中有的迴圈語法簡化上面所說的。
2.7.3 :126 > 10.times do puts "Rollin'" end
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
=> 10
2.7.3 :127 > 10.times { puts "Rollin'" } # do end的簡化寫法,喜歡哪個用哪個,另外這個寫法叫block。(講完會蒸發的那一種衍生題)
Ruby中有些迴圈語法會做複數以上的事情。
2.7.3 :128 > shake = ["head", "hand", "body"]
=> ["head", "hand", "body"]
2.7.3 :133 > shake.each {|part| puts "Shake your #{part}!"} #迭代(iteration)
Shake your head!
Shake your hand!
Shake your body!
=> ["head", "hand", "body"] #each方法用法可以再查詢,很常用。可以把133行的puts拿掉,觀察會發生何事。
2.7.3 :134 > shake.map {|part| "Shake your #{part}!"}
=> ["Shake your head!", "Shake your hand!", "Shake your body!"]
#把shake這個陣列,每一個資料變成"Shake your #{part}!",再變成一個新陣列。
我知道我很多細節還沒說,但畢竟已經有很多很好的資料可以看到基礎的部分,我還是以自己學習中,覺得要特別記得的心得作分享。這幾天分享的部分,還請配合已經編寫很清楚的龍哥-為你自己學Ruby on rails服用。(第五,六)
另外請有緣人查詢以下語法的用法。
each_with_index
都是可以將資料包起後成為字串。
2.7.3 :136 > "K-POP!"
=> "K-POP!"
2.7.3 :137 > 'K-POP!'
=> "K-POP!"
2.7.3 :138 > "K-POP!".class
=> String
2.7.3 :139 > 'K-POP!'.class
=> String
但是" "中可以加入#{}這個, ' '不可以。
衍生資料:https://stackoverflow.com/questions/10869264/meaning-of-in-ruby菜鳥我只記怎麼用,文章上面已經示範了
ok!今天收工!
我也很喜歡在 irb 上試語法,
習慣在 ~/.irbrc 裡設定:IRB.conf[:PROMPT_MODE] = :SIMPLE
可以讓那提示符號簡潔,
而不需讓人知道你敲了幾個指令。
感謝分享喔!!