欸!?這個不是在 hello world 的時候講過了ㄇ?!
對。
其實函式還是有其他東西可以講解的,程式就是很多function去組合起來,把function搞清楚了,第一份工作肯定會超過一個月。讚。
有人說 function 在一些程式語言中是一等公民( first class citizen ),一等公民聽起來好像很霸道很高級,但一開始聽到一等公民這個詞我也是塞爆了問號,後來翻閱網路跟書籍後,才稍微了解, 簡單來說,一等公民可以做為函數的引數,可以最為函是返回值,也可以賦值給變數。
不過今天呢,我也是打算從最一開始講起,因為我還不會甚麼太艱深的東西。
欸嘿。
應該都可以啦,但我都叫他 function。
你可以將一個或是多個表達式歸入封裝成一個 function ,你可以在需要那個程式的想法與邏輯的時候去調用那個 function ,你就不用每次都要打類似的程式碼啦。
建立一個 function 先用 fun 去宣告,後面接 function 名字,定義傳入參數的型別(如果有的話),跟定義他回傳的輸出型別,大括號裡就是放你要寫的程式碼。
fun generateAnswerString(): String {
val answerString = if(count == 42){
"賓果答對了!是42!"
}else{
"不對欸不對欸"
}
return answerString
}
上面的function name 是 generateAnswerString。這個 function 不接受傳入參數,輸出的結果是 String 的型別。 那要調用這個 function 的話要輸入以下程式:
generateAnswerString()
那要讓函數可以接受輸入參數,可以這樣打:
fun generateAnswerString(countThreshold: Int): String {
val answerString = if(count == countThreshold){
"賓果答對了!是42!"
}else{
"不對欸不對欸"
}
return answerString
}
上面的範例中,generateAnswerString( ) 接受一個叫做 countThreshold 的 Int 類型的參數,在 generateAnswerString 這個 function 裡面利用參數的名稱來去使用。
要調用這個 function 的話,就必須在() 中添加一個數值。
val answerString = generateAnswerString(42)
這樣就可以啦。
上面範例的 generateAnswerString() 是一個簡單的函數,在程式中是先宣告一個 answerString 再將後面 if-else 產生的結果存入 answerString 裡面,最後再回傳 answerString。
那不如我們直接回傳 if-else 產生的結果!
fun generateAnswerString(countThreshold: Int): String {
return if(count == countThreshold){
"賓果答對了!是42!"
}else{
"不對欸不對欸"
}
又更簡潔了。
也是可以把 return 替換成 "=" :
fun generateAnswerString(countThreshold: Int): String = if(count == countThreshold){
"賓果答對了!是42!"
}else{
"不對欸不對欸"
}
基礎的函式就先到這邊,
下一篇見寫寫打家打家擺掰。