為什麼需要方法?簡單來說就是讓程式碼可以重複使用而且更容易理解
在 Ruby 中定義方法的起手式為def
def bmi_calculator(height, weight)
height_m = height / 100.0
bmi = (weight / (height_m ** 2)).round(2)
puts "Your BMI is #{bmi}"
end
這邊就定義的一個計算BMI的方法bmi_calculator
後面的 height, weight
是這個方法的參數(parameter) 有兩個參數以上請記得用逗號,
隔開,方法的命名非常重要,以BMI為例子,即使看不懂中間的程式碼也能透過方法的名字bmi_calculator
大概猜出來這是計算BMI的方法,命名方式跟可讀性可說是息息相關。
使用方法很簡單,直接呼叫方法跟帶入引數即可
bmi_calculator(180, 80) # 印出 Your BMI is 24.69
參數是在定義方法(或函數)時命名的變數,用於接受傳遞給方法的數據而引數是在調用方法時傳遞給方法的實際數據。
在定義方法時,可幫參數加上預設值:
def say_hello_to(name = '漩渦鳴人')
puts "Hello #{name}"
end
say_hello_to ('五條悟') # 印出 Hello 五條悟
say_hello_to # 印出 Hello 漩渦鳴人
return 可適時省略,會自動回傳最後一行的執行結果。
以下以台電電費計算為例:
def electricity_cost_calculator(usage, is_summer)
if usage < 0
return "用電度數不能為負數" # return可省略
end
rate = case usage
when 0..120
1.63
when 121..330
is_summer ? 2.38 : 2.10
when 331..500
is_summer ? 3.52 : 2.89
when 501..700
is_summer ? 4.80 : 3.94
when 701..1000
is_summer ? 5.83 : 4.74
else
is_summer ? 7.69 : 6.03
end
cost = (usage * rate).to_i
return cost # return可省略
end
electricity_cost = electricity_cost_calculator(886, false)
puts "電費:#{electricity_cost}元" # 印出 電費:3597元
? 跟 ! 可以是命名的一部份,但要放在最後
問號通常會回傳布林值
就是true
跟false
,驚嘆號通常表示要注意
在上面的台電電費的參數is_summer
就是布林值,我們舉其中一行程式碼來說明:
when 121..330
is_summer ? 2.38 : 2.10
當度數在121度到330度之間,如果是夏天is_summer ?
加上問號, 是true 條件表達式傳回 2.38 ,反之 false 的話,傳回 2.10
list = [9, 5, 2, 7]
p list.sort # 進⾏排序,但不會改變 list 的內容
p list # 印出 [9, 5, 2, 7]
p list.sort! # 進⾏排序,並且直接改變 list 的內容
p list # 印出 [2, 5, 7, 9]
Day 08 預計來介紹迴圈與迭代,我們明天見!