Kotlin------函式和程式碼註釋
阿新 • • 發佈:2019-02-03
定義函式
Kotlin定義一個函式的風格大致如下
訪問控制符 fun 方法名(引數,引數,引數) : 返回值型別{
...
...
}
- 訪問控制符:與Java有點差異,Kotlin的訪問範圍從大到小分別是public、internal、protected、private,不宣告預設是public;
- 返回值型別:不需要返回型別的函式,後面的 : 返回值型別可以預設(這裡可以看到無論是變數還是方法,Kotlin都喜歡名字在前,型別在後);
/***Kotlin版程式碼***/ //有返回引數的函式 fun getName(): String { return "Kotlin" } //無返回引數的函式 fun displayName(name: String) { println("name: $name") } /***Java版程式碼***/ public String getName() { return "Java"; } public void displayName(String name) { System.out.println("name: " + name); }
相比Java,Kotlin支援包級函式,即函式不依賴於類而存在。
/***Kotlin版程式碼***/ package lesson1 /** * Created by Clock on 2017/6/18. */ fun main(args: Array<String>) { println("Kotlin") } /***Java版程式碼***/ package lesson1; /** * Created by Clock on 2017/6/18. */ public class Lesson1 { public static void main(String[] args) { System.out.println("Java"); } }
對比上面的程式碼,Java建立一個方法前還需要先建立一個類。剛開始安裝IntelliJ IDEA編寫程式碼時,我還有個疑惑,為什麼有建立Kotlin File/Class兩個選擇,到這裡就明白了。
引數變長
Kotlin的引數變長非常簡單,傳遞的引數使用關鍵字vararg標明即可
/***Kotlin版程式碼***/ //引數變長 fun displayActors(vararg name: String) { println("actors: " + name); } /***Java版程式碼***/ public void displayActors(String... name) { System.out.println("actors :" + name); }
相比Java,變長引數在Kotlin程式碼中要常見很多。
靜態變數和函式
Kotlin沒有Java中的static概念,如果在Kotlin中需要像Java一樣定義靜態變數和函式可以使用companion object,companion object後可以加上自定義的object名,也可以省略。
/***Kotlin版程式碼***/
class KotlinStatic {
companion object Test {
var kotlinInt: Int = 0
fun getInstance(): KotlinStatic {
return KotlinStatic()
}
}
}
/***Java版程式碼***/
public class Lesson1 {
public static int javaInt = 0;
public static Lesson1 getInstance() {
return new Lesson1();
}
}
這樣在需要使用的地方就可以做如下呼叫了
package lesson0
import lesson1.KotlinStatic
/**
* Created by Clock on 2017/6/17.
*/
fun main(args: Array<String>) {
println("Hello, world!")
KotlinStatic.kotlinInt
KotlinStatic.getInstance()
}
package lesson0 import lesson1.KotlinStatic /** * Created by Clock on 2017/6/17. */ fun main(args: Array<String>) { println("Hello, world!") KotlinStatic.kotlinInt KotlinStatic.getInstance() }
雖然看起來companion object實現了類似Java中static一樣的功能,但與Java不同的是,Kotlin在執行時是會建立一個companion object例項物件。在Kotlin中,如果真的想要實現和Java中的static變數或函式,官方更推薦使用包級別的變數或函式來實現。
返回 Unit 的函式
如果一個函式不返回任何有用的值,它的返回型別是 Unit 。 Unit 是一種只有一個值 —— Unit 的型別。這個值不需要顯式返回
Unit
返回型別宣告也是可選的。上面的程式碼等同於
fun printHello(name: String?) {
……
}
package lesson0
import lesson1.KotlinStatic
/**
* Created by Clock on 2017/6/17.
*/
fun main(args: Array<String>) {
println("Hello, world!")
KotlinStatic.kotlinInt
KotlinStatic.getInstance()
}
程式碼註釋
正如 Java 和 JavaScript,Kotlin 支援行註釋及塊註釋。
// 這是一個行註釋
/* 這是一個多行的
塊註釋。 */
與 Java 不同的是,Kotlin 的塊註釋可以巢狀。就是說,你可以這樣註釋:
/**
* hhhh
* /**
* fff
* /**
* ggggg
* */
* */
*
* abc
*
*/