<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 習慣用法 一些在 Kotlin 中廣泛使用的語法習慣,如果你有更喜歡的語法習慣或者風格,建一個 pull request 貢獻給我們吧! [TOC] ### 創建 DTOs(POJOs/POCOs) ```kotlin data class Customer(val name: String, val email: String) ``` 會為 `Customer` 類提供以下功能: * 所有屬性的 getters (對于 *var*{: .keyword } 定義的還有 setters) * `equals()` * `hashCode()` * `toString()` * `copy()` * 所有屬性的 `component1()`、 `component2()`……等等(參見[數據類](http://www.kotlincn.net/docs/reference/data-classes.html)) ### 函數的默認參數 ```kotlin fun foo(a: Int = 0, b: String = "") { …… } ``` ### 過濾 list ```kotlin val positives = list.filter { x -> x > 0 } ``` 或者可以更短: ```kotlin val positives = list.filter { it > 0 } ``` ### 檢測元素是否存在于集合中 ```kotlin if ("john@example.com" in emailsList) { …… } if ("jane@example.com" !in emailsList) { …… } ``` ### 字符串內插 ```kotlin println("Name $name") ``` ### 類型判斷 ```kotlin when (x) { is Foo //-> …… is Bar //-> …… else //-> …… } ``` ### 遍歷 map/pair型list ```kotlin for ((k, v) in map) { println("$k -> $v") } ``` `k`、`v` 可以改成任意名字。 ### 使用區間 ```kotlin for (i in 1..100) { …… } // 閉區間:包含 100 for (i in 1 until 100) { …… } // 半開區間:不包含 100 for (x in 2..10 step 2) { …… } for (x in 10 downTo 1) { …… } if (x in 1..10) { …… } ``` ### 只讀 list ```kotlin val list = listOf("a", "b", "c") ``` ### 只讀 map ```kotlin val map = mapOf("a" to 1, "b" to 2, "c" to 3) ``` ### 訪問 map ```kotlin println(map["key"]) map["key"] = value ``` ### 延遲屬性 ```kotlin val p: String by lazy { // 計算該字符串 } ``` ### 擴展函數 ```kotlin fun String.spaceToCamelCase() { …… } "Convert this to camelcase".spaceToCamelCase() ``` ### 創建單例 ```kotlin object Resource { val name = "Name" } ``` ### If not null 縮寫 ```kotlin val files = File("Test").listFiles() println(files?.size) ``` ### If not null and else 縮寫 ```kotlin val files = File("Test").listFiles() println(files?.size ?: "empty") ``` ### if null 執行一個語句 ```kotlin val values = …… val email = values["email"] ?: throw IllegalStateException("Email is missing!") ``` ### 在可能會空的集合中取第一元素 ```kotlin val emails = …… // 可能會是空集合 val mainEmail = emails.firstOrNull() ?: "" ``` ### if not null 執行代碼 ```kotlin val value = …… value?.let { …… // 代碼會執行到此處, 假如data不為null } ``` ### 映射可空值(如果非空的話) ```kotlin val value = …… val mapped = value?.let { transformValue(it) } ?: defaultValueIfValueIsNull ``` ### 返回 when 表達式 ```kotlin fun transform(color: String): Int { return when (color) { "Red" -> 0 "Green" -> 1 "Blue" -> 2 else -> throw IllegalArgumentException("Invalid color param value") } } ``` ### “try/catch”表達式 ```kotlin fun test() { val result = try { count() } catch (e: ArithmeticException) { throw IllegalStateException(e) } // 使用 result } ``` ### “if”表達式 ```kotlin fun foo(param: Int) { val result = if (param == 1) { "one" } else if (param == 2) { "two" } else { "three" } } ``` ### 返回類型為 `Unit` 的方法的 Builder 風格用法 ```kotlin fun arrayOfMinusOnes(size: Int): IntArray { return IntArray(size).apply { fill(-1) } } ``` ### 單表達式函數 ```kotlin fun theAnswer() = 42 ``` 等價于 ```kotlin fun theAnswer(): Int { return 42 } ``` 單表達式函數與其它慣用法一起使用能簡化代碼,例如和 *when*表達式一起使用: ```kotlin fun transform(color: String): Int = when (color) { "Red" -> 0 "Green" -> 1 "Blue" -> 2 else -> throw IllegalArgumentException("Invalid color param value") } ``` ### 對一個對象實例調用多個方法 (`with`) ```kotlin 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() } ``` ### Java 7 的 try with resources ```kotlin val stream = Files.newInputStream(Paths.get("/some/file.txt")) stream.buffered().reader().use { reader -> println(reader.readText()) } ``` ### 對于需要泛型信息的泛型函數的適宜形式 ```kotlin // public final class Gson { // …… // public <T> T fromJson(JsonElement json, Class<T> classOfT) throws JsonSyntaxException { // …… inline fun <reified T: Any> Gson.fromJson(json: JsonElement): T = this.fromJson(json, T::class.java) ``` ### 使用可空布爾 ```kotlin val b: Boolean? = …… if (b == true) { …… } else { // `b` 是 false 或者 null } ``` ### 交換兩個變量 ```kotlin var a = 1 var b = 2 a = b.also { b = a } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看