<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國際加速解決方案。 廣告
                ### [二元操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#二元操作) [TOC] #### 算術運算符 | 表達式 | 翻譯為 | | --- | --- | | `a + b` | `a.plus(b)` | | `a - b` | `a.minus(b)` | | `a * b` | `a.times(b)` | | `a / b` | `a.div(b)` | | `a % b` | `a.rem(b)`、`a.mod(b)`(已棄用) | | `a..b` | `a.rangeTo(b)` | 對于此表中的操作,編譯器只是解析成*翻譯為*列中的表達式。 >[info]【注意】,自 Kotlin 1.1 起支持`rem`運算符。Kotlin 1.0 使用`mod`運算符,它在 Kotlin 1.1 中被棄用。 PS:關于字符串的 + 運算符重載,以及數值類型的 + 運算符重載,可以查看源碼,也可以查看本系列的數值類型章節和字符串章節 #### 示例 下面是一個從給定值起始的 Counter 類的示例,它可以使用重載的`+`運算符來增加計數: ``` data class Counter(val dayIndex: Int) { operator fun plus(increment: Int): Counter { return Counter(dayIndex + increment) } } ``` #### [“In”操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#in) | 表達式 | 翻譯為 | | --- | --- | | `a in b` | `b.contains(a)` | | `a !in b` | `!b.contains(a)` | 對于`in`和`!in`,過程是相同的,但是參數的順序是相反的。 #### [索引訪問操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#indexed) | 表達式 | 翻譯為 | | --- | --- | | `a[i]` | `a.get(i)` | | `a[i, j]` | `a.get(i, j)` | | `a[i_1, ……, i_n]` | `a.get(i_1, ……, i_n)` | | `a[i] = b` | `a.set(i, b)` | | `a[i, j] = b` | `a.set(i, j, b)` | | `a[i_1, ……, i_n] = b` | `a.set(i_1, ……, i_n, b)` | 方括號轉換為調用帶有適當數量參數的`get`和`set`。 #### [調用操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#invoke) | 表達式 | 翻譯為 | | --- | --- | | `a()` | `a.invoke()` | | `a(i)` | `a.invoke(i)` | | `a(i, j)` | `a.invoke(i, j)` | | `a(i_1, ……, i_n)` | `a.invoke(i_1, ……, i_n)` | 圓括號轉換為調用帶有適當數量參數的`invoke`。 #### [廣義賦值](http://www.kotlincn.net/docs/reference/operator-overloading.html#assignments) | 表達式 | 翻譯為 | | --- | --- | | `a += b` | `a.plusAssign(b)` | | `a -= b` | `a.minusAssign(b)` | | `a *= b` | `a.timesAssign(b)` | | `a /= b` | `a.divAssign(b)` | | `a %= b` | `a.remAssign(b)`,`a.modAssign(b)`(已棄用) | 對于賦值操作,例如`a += b`,編譯器執行以下步驟: * 如果右列的函數可用 * 如果相應的二元函數(即`plusAssign()`對應于`plus()`)也可用,那么報告錯誤(模糊), * 確保其返回類型是`Unit`,否則報告錯誤, * 生成`a.plusAssign(b)`的代碼; * 否則試著生成`a = a + b`的代碼(這里包含類型檢查:`a + b`的類型必須是`a`的子類型)。 >[info]【注意】:賦值在 Kotlin 中*不是*表達式。 #### [相等與不等操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#equals) Kotlin 中有兩種類型的相等性: * 引用相等`===``!==`(兩個引用指向同一對象) * 結構相等`==``!=`( 使用`equals()`判斷) | 表達式 | 翻譯為 | | --- | --- | | `a == b` | `a?.equals(b) ?: (b === null)` | | `a != b` | `!(a?.equals(b) ?: (b === null))` | 這些操作符只使用函數[`equals(other: Any?): Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/equals.html),可以覆蓋它來提供自定義的相等性檢測實現。不會調用任何其他同名函數(如`equals(other: Foo)`)。 >[info]【注意】:`===`和`!==`(同一性檢查)不可重載,因此不存在對他們的約定。 這個`==`操作符有些特殊:它被翻譯成一個復雜的表達式,用于篩選`null`值。null == null總是 true,對于非空的`x`,`x == null`總是 false 而不會調用`x.equals()`。 意思是:如果 a 不是 null 則調用`equals(Any?)`函數并返回其值;否則(即`a === null`)就計算`b === null`的值并返回。 當與 null 顯式比較時,`a == null`會被自動轉換為`a=== null` #### [比較操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#comparison) | 表達式 | 翻譯為 | | --- | --- | | `a > b` | `a.compareTo(b) > 0` | | `a < b` | `a.compareTo(b) < 0` | | `a >= b` | `a.compareTo(b) >= 0` | | `a <= b` | `a.compareTo(b) <= 0` | 所有的比較都轉換為對`compareTo`的調用,這個函數需要返回`Int`值 #### [屬性委托操作符](http://www.kotlincn.net/docs/reference/operator-overloading.html#屬性委托操作符) `provideDelegate`、`getValue`以及`setValue`操作符函數已在[委托屬性](http://www.kotlincn.net/docs/reference/delegated-properties.html)中描述。
                  <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>

                              哎呀哎呀视频在线观看