iT邦幫忙

1

Ruby基本介紹(四)

  • 分享至 

  • xImage
  •  

基本上大叔宅男不是很想放男團K-pop, XD!!!
Yes


本篇會提到的

  1. 定義方法
  2. 迴圈(loop)

定義方法

其實前面幾篇很明顯顯示,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!我們先進入迴圈。


迴圈:就是重複做一件事

但是在程式語言中,使用迴圈語法有幾件很重要的事。

  • 程式語言中一般的迴圈語法,你要設立一個迴圈終止的條件。
  • Ruby中有的迴圈語法簡化上面所說的。
  • Ruby中有些迴圈語法會做複數以上的事情。
  • 迴圈多不一定不好,編碼多不一定不好,但Ruby的特色之一就是能讓迴圈減少,編碼減少,這是學Ruby要注意的事情。

設立終止條件

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!今天收工!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
逮丸逮丸
iT邦大師 1 級 ‧ 2021-08-08 01:58:08

我也很喜歡在 irb 上試語法,
習慣在 ~/.irbrc 裡設定:
IRB.conf[:PROMPT_MODE] = :SIMPLE
可以讓那提示符號簡潔,
而不需讓人知道你敲了幾個指令。

nauosika iT邦新手 4 級 ‧ 2021-08-08 09:59:29 檢舉

感謝分享喔!!

我要留言

立即登入留言