Kotlin從入門到放棄(四) 函數運用

Kotlin從入門到放棄(四) 函數運用

本篇主要總結和分析Kotlin對函數提供的新功能,包括函數的基本定義、輸入參數、輸出參數的類型定義來歸納整理。

1.函數的基本用法

1.1與Java聲明方式的區別

Java編寫的onCreate函數如下:

@Override
public void onCreate(Bundle savedInstanceState){
    ...
}

Kotlin編寫的onCreate函數如下:

 override fun onCreate(savedInstanceState: Bundle?) {
     ...
 }
  1. Java使用“@Override”來表示父類的方法,Kotlin使用小寫的“override”在同一行表示進行重載操作。
  2. Java使用“public”表示公共方法,Kotlin默認函數就是公開的,所以省略關鍵字。
  3. Java使用“void”表示函數無返回值,Kotlin無返回參數,不用特別說明。
  4. Kotlin新增了關鍵字“fun”,來表達這是函數定義
  5. Java 聲明參數的格式爲“變量類型 變量名稱”,而Kotlin爲“變量名稱:變量類型”
  6. Kotlin引入了空安全機制,如果某個變量允許爲空,則在變量類型後面加?
1.2輸入參數的格式

無參函數寫法如下:

 fun setText(){
        tx.setText("Java")
    }

有參函數的寫法如下:

 fun setText(str:String){
        tx.setText(str)
    }

在Kotlin中調用函數方法和Java中一樣,直接採取“函數名稱(參數列表)”

  setText(str)
1.3輸出參數的格式
 fun main():Int

當開發者不聲明任何返回參數,Kotlin函數也會默認返回一個Unit類型的對象。
因爲Unit類型的參數無須開發者返回具體的值,所以Kotlin代碼往往把函數名稱後面的“:Unit”直接省略掉了。增加Unit類型的目的是爲了讓函數定義完全符合變量定義的形式,函數需要具體的輸出函數,加關鍵字return 返回參數值。

 fun setText(str:String):String{
        tx.setText(str)
        return str
 }

2.輸入參數的變化

2.1默認參數

Java的默認參數允許在定義函數時直接輸入參數的默認值,如果調用函數時沒有給出某參數的具體值,系統就自動對該參數賦予默認值。寫法如下

 fun setText(str:String = "Kotlin"):String{
        tx.setText(str)
        return str
 }
2.2命名參數

如果不滿意默認值,我們可以在調用函數時輸入新的值。具體格式“參數名= 參數值”

setText(str = "Java")
2.3可變參數

Kotlin新增了關鍵字vararg,表示後面的參數格式是不確定的。寫法如“vararg arg:String?”。
Kotlin同時也支持可變的數組參數,寫法如下

 vararg nameArray: Array<String>

3.幾種特殊的函數

3.1泛型函數

定義泛型函數時,得在函數名稱前面加“<T>",表示以T聲明的參數,其參數類型在函數調用時指定。

 fun <T> setText(str:T):T{
        return str
    }
3.2內聯函數

舉個例子,Int、Float、Double都繼承自Number類,但是定義一個輸入參數爲setArray(array:Array<Number>)的函數,他並不接受值爲Int的參數。這是我們需要指定T繼承自基類Nuember,同時在fun 前面添加inline,表示此函數屬於內聯函數。用法如下

 inline fun <reified T:Number> setText(str:T):T {
        return str
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章