整理學習kotlin過程當中遇到的難點,記錄下來,而後再理解理解。(新手寫的博客,勿噴)java
習慣用法:json
fun String.spaceToCamelCase() { …… } "Convert this to camelcase".spaceToCamelCase()
val files = File("Test").listFiles() println(files?.size)
val files = File("Test").listFiles() println(files?.size)
val files = File("Test").listFiles() println(files?.size ?: "empty")
val data = …… val email = data["email"] ?: throw IllegalStateException("Email is missing!")
val data = …… data?.let { …… // 代碼會執行到此處, 假如data不爲null }
Unit
的方法的 Builder 風格用法fun arrayOfMinusOnes(size: Int): IntArray { return IntArray(size).apply { fill(-1) } }
Unit
的方法的 Builder 風格用法fun arrayOfMinusOnes(size: Int): IntArray { return IntArray(size).apply { fill(-1) } }
fun theAnswer() = 42
等價於app
fun theAnswer(): Int { return 42 }
單表達式函數與其它慣用法一塊兒使用能簡化代碼,例如和 when 表達式一塊兒使用:函數
fun transform(color: String): Int = when (color) { "Red" -> 0 "Green" -> 1 "Blue" -> 2 else -> throw IllegalArgumentException("Invalid color param value") }
with
)class Turtle { fun penDown() fun penUp() fun turn(degrees: Double) fun forward(pixels: Double) } val myTurtle = Turtle() with(myTurtle) { // 畫一個 100 像素的正方形 penDown() for(i in 1..4) { forward(100.0) turn(90.0) } penUp() }
val stream = Files.newInputStream(Paths.get("/some/file.txt")) stream.buffered().reader().use { reader -> println(reader.readText()) }
// public final class Gson { // …… // public <T> T fromJson(JsonElement json, Class<T> classOfT) throws JsonSyntaxException { // …… inline fun <reified T: Any> Gson.fromJson(json): T = this.fromJson(json, T::class.java)
val b: Boolean? = …… if (b == true) { …… } else { // `b` 是 false 或者 null }
kotlin是門好語言,是門有前途的語言。學習