藉由def…end來定義方法,
def method_name(param1, param 2)
end
例如:
def fix(something)
puts "fixing #{something}"
end
我們藉由def定義一個叫fix的方法,其中參數為something,
當然參數不限只有一個,也可以以一個以上,
當有一個以上的參數就會藉由逗號來將參數做分隔。
直接將方法名字寫出來就可以叫出方法,例如:
fix("chair")
就可以印出 fixing chair。
出了直接用名字叫出方法之外,因為當建立方法時,
會產生一個:fix的符號,我們也可以藉由send包住符號,
將方法叫出,例如上述的例子,我們可以寫成:
send(:fix,"desk")
用send將符號呼叫出,第二個位置是給fix方法裡面參數,在這邊給了desk這個引數。
其實在定義方法的時候,我們可以幫參數加上原本的預設值,即便沒輸入引數,也可以使用預設值。
def discuss(someone = "everyone")
puts "Have to discuss with #{someone}"
end
當寫出discuss("Arance")時,會印出Have to discuss with Arance,
而當寫discuss時,會印出Have to discuss with everyone。
我們經常使用puts將我們所要的東西印出來,
但有時候我們不一定要馬上印出來,可以藉由回傳值接收到執行後的結果,
等之後我們想印出來的時候再印出來,例如:
我們定義一個方法,想要得到任何數三倍的值
def triple(num)
return num * 3
end
我們讓它回傳結果,不一定要印出來。
可以再藉由puts triple(5),就可以印出15。
因為如果我們直接在方法裡面印出東西來,其實藉由puts本身是沒有回傳值的。
今天學到Ruby中如何藉由定義方法來自己產生方法,也學習到如何使用這些方法,
藉由預設值來了解,當我們不給引數時,可以藉由預設值讓預設的東西保留下來,
也區分puts其實不會幫我們保留回傳的東西,
只是將東西列印出來,要必須藉由return才可以保留回傳的東西。