機
器
人
函數的應用
這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。
除了回傳數字之外,其實函數還有很多實用的地方,它不只能用來回傳數字,還能用來回傳其他資料。另外,它也能用來把看起來很複雜的程式,變得簡單易懂!幾個常見的用法如下:
回傳各類資料
經常我們定義一個函數,希望它回傳的不是數字。你可能會問說,**數學中的函數不就是用來回傳數字嗎?**話是這麼說沒有錯,但是在寫程式時,我們可以不需要被數字限制住,可以回傳很多不同的資料型態。
例如我們可以寫一個函數叫做 isIn
,搜尋某一字串是否在一個陣列裡面,如果有,就回傳 true
,反之,則回傳 false
。
function isIn(list, goal){
for(item in list){
if(item == goal){
return true;
}
}
return false;
}
在此值得注意的是,函數一但回傳了值,剩餘的程式碼便不會再執行。讓我們試著呼叫一下這個函數:
names = ["Sam", "James", "Mandy"];
search = "Jenny";
print(isIn(names, search));
電腦在執行時,藉由 isIn
函數中的 for
迴圈一一看過 list
變數中的每一個項目,如果有項目與變數 goal
相等,便回傳 true
,否則則回傳 false
。因為 search
變數所代表的「Jenny」並沒有在 names
中出現,因此螢幕上將會印出 false
。
這個例子證明了程式中的函數不一定要回傳數字,也可以是布林值、字串等各種資料型態。
不回傳值的函數
有時候,函數可以不回傳任何的值,也就是說,有些函數可以不用有 return
,但你可能會好奇,函數不就是用來得到數值的嗎?那如果不回傳值,這函數存在的意義是什麼?
假設有一段程式碼,我們會在程式中的不同地方重複用到,像下面這樣:
link1 = "example.com";
link1 = "www." + link1;
link1 = "https://" + link1;
go(link1);
link2 = "good.com";
link2 = "www." + link2;link2 = "https://" + link2;
go(link2);
link3 = "yes.com";
link3 = "www." + link3;
link3 = "https://" + link3;
go(link3);
我們可以看到,程式在執行時,我們不停執行同樣的內容,差別只在於變數所代表的值不同。在這種狀況下,倘若我們將這段程式改作函數的形式,將會方便很多:
/*宣告函數*/
function run(link){
link = "www." + link;
link = "https://" + link;
go(link);
}
/*執行函數*/
run("example.com");
run("good.com");
run("yes.com");
如此一來,重複的程式只需要寫一次,而且當我們要修改程式時,也只需要在一個地方修改,是不是很方便呢?不回傳值的函數,雖然並不會回傳運算的結果,但是卻能讓程式更加簡單易懂,提升我們寫程式的效率。