掌握Ruby世界就要先懂:方法
這部分的觀念相當重要喔,大家使用 ruby 主要為了可以好好操作 rails 這個開發框架,裡面內部組成,除了前面的資料類型及邏輯判斷等,再來務必要認識的就是這些方法(Method)跟區塊(Block)的使用了。有一定的認識後進入 rails 的世界才能看懂其中的奧妙呀!
方法 (Method)
為什麼要使用?
有些時候我們會重複做一些指令,如果可以簡單幾行字就能呼叫一連串的指令,然後可以重複利用在不同的地方,就是我們為什麼會要使用方法的原因啦。
如何定義與使用?
如同標題我們要定義就是使用 define 這個英文的簡寫 def
來開頭,後面宣告這個方法的名稱,名稱很重要最好可以清楚表達執行內容,接著就是放入的參數及要執行的內容,最後再加上 end
結束,後面會介紹到這段def...end
的範圍稱為區塊,大概會長成這樣:
1 | def say_hello() # 方法名為say_hello,後面括號可以不放參數 |
參數(parameter)與引數(argument)
很多人都會搞混這部分,認為都是叫做參數。其實是:
- 參數是在定義方法時後面括號內部物件
- 引數是在呼叫使用方法時括號內所帶入的物件
1 | def say_hello_to(name) # 放入參數name |
使用注意參數與引數的數量
必須一個蘿蔔一個坑對入,如果參數有 3 個,只要引數不等於 3 個都是會出錯的!!
1 |
|
參數預設值
方法的參數可以用 “=” 先預設好喔
1 | def say_hello_to(name ="Ken") # 預設name為"Ken" |
回傳
從前面的例子如果有注意到其實方法的最後一行就是所謂的回傳值,注意特別的是 Ruby 中 return 可以適時的省略,自動回傳最後一行。
比較需要注意很多人以為用 puts 印出就表示回傳了,其實 puts 是沒有回傳值的,沒回傳就會回傳 nil。
1 | # puts沒有回傳 |
1 | def double_num(num) |
? 及 ! 究竟在幹嘛?
- ? 跟 ! 可以是命名的一部份,但只能放在最後面
- 問號通常會回傳真假值,而驚嘆號通常表示要注意!
1 | def is_adult?(age) |
1 | list = [1,4,3,2] |
參考資料:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Sean's Blog!
評論
GiscusDisqus