iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
Software Development

糟了!是世界奇觀!系列 第 12

DAY12 Kotlin基礎 函式

欸!?這個不是在 hello world 的時候講過了ㄇ?!

對。

其實函式還是有其他東西可以講解的,程式就是很多function去組合起來,把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{
        "不對欸不對欸"
    }

基礎的函式就先到這邊,

下一篇見寫寫打家打家擺掰。


上一篇
DAY11 Kotlin基礎 條件語句
下一篇
DAY13 Kotlin基礎 Class
系列文
糟了!是世界奇觀!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言