在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Kotlin動(dòng)態(tài)類(lèi)型
Kotlin內(nèi)聯(lián)函數(shù)
Kotlin開(kāi)發(fā)環(huán)境設(shè)置(Eclipse)
Kotlin調(diào)用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫(xiě)Kotlin代碼文檔
Kotlin返回和跳轉(zhuǎn)
Kotlin異常處理
Kotlin可見(jiàn)性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風(fēng)格
Kotlin基礎(chǔ)語(yǔ)法
使用Kotlin進(jìn)行服務(wù)器端開(kāi)發(fā)
Kotlin接口
Kotlin反射
Kotlin類(lèi)型別名
Kotlin枚舉類(lèi)
Kotlin當(dāng)前版本是多少?
Kotlin注解處理工具
Kotlin類(lèi)型的檢查與轉(zhuǎn)換
Kotlin屬性和字段
Kotlin類(lèi)型安全的構(gòu)建器
Kotlin相比Java語(yǔ)言有哪些優(yōu)點(diǎn)?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語(yǔ)法
Kotlin與OSGi
Kotlin數(shù)據(jù)類(lèi)型
Kotlin是面向?qū)ο筮€是函數(shù)式語(yǔ)言?
Kotlin動(dòng)態(tài)類(lèi)型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類(lèi)
Kotlin兼容性
Kotlin集合
Kotlin調(diào)用JavaScript
Kotlin null值安全
Kotlin函數(shù)
Kotlin開(kāi)發(fā)環(huán)境設(shè)置(IntelliJ IDEA)
Kotlin嵌套類(lèi)
Kotlin控制流程
Kotlin和Java語(yǔ)言比較
Kotlin 與 Java 語(yǔ)言兼容嗎?
Kotlin教程
Kotlin類(lèi)和繼承
Kotlin對(duì)象表達(dá)式和對(duì)象聲明
JavaScript中調(diào)用Kotlin
Kotlin區(qū)間/范圍
Kotlin數(shù)據(jù)類(lèi)
Kotlin lambda表達(dá)式
Kotlin是免費(fèi)的嗎?
Kotlin包
使用Kotlin進(jìn)行Android開(kāi)發(fā)
在Java中調(diào)用Kotlin代碼
Kotlin this表達(dá)式
使用Kotlin進(jìn)行JavaScript開(kāi)發(fā)
Kotlin擴(kuò)展
Kotlin解構(gòu)聲明
Kotlin注解
Kotlin使用Maven

Kotlin動(dòng)態(tài)類(lèi)型

作為一種靜態(tài)類(lèi)型的語(yǔ)言,Kotlin仍然需要與無(wú)類(lèi)型或松散類(lèi)型的環(huán)境(例如
JavaScript生態(tài)系統(tǒng))進(jìn)行互操作。為了方便這些使用場(chǎng)景,語(yǔ)言中有 dynamic 類(lèi)型可用:

val dyn: dynamic = ……

在面向 JVM 平臺(tái)的代碼中不支持動(dòng)態(tài)類(lèi)型

dynamic 類(lèi)型基本上關(guān)閉了 Kotlin 的類(lèi)型檢查系統(tǒng):

  • 該類(lèi)型的值可以賦值給任何變量或作為參數(shù)傳遞到任何位置,
  • 任何值都可以賦值給 dynamic 類(lèi)型的變量,或者傳遞給一個(gè)接受 dynamic 作為參數(shù)的函數(shù),
  • null-檢查對(duì)這些值是禁用的。

dynamic 最特別的特性是,我們可以對(duì) dynamic 變量調(diào)用任何屬性或以任意參數(shù)調(diào)用任何函數(shù)

dyn.whatever(1, "foo", dyn) // “whatever”在任何地方都沒(méi)有定義
dyn.whatever(*arrayOf(1, 2, 3))

在 JavaScript 平臺(tái)上,該代碼將按照原樣編譯:在生成的 JavaScript 代碼中,Kotlin中的 dyn.whatever(1) 變?yōu)?dyn.whatever(1)

當(dāng)在 dynamic 類(lèi)型的值上調(diào)用 Kotlin 寫(xiě)的函數(shù)時(shí),請(qǐng)記住由
Kotlin 到 JavaScript 編譯器執(zhí)行的名字修飾。你可能需要使用 @JsName 注解
為要調(diào)用的函數(shù)分配明確的名稱(chēng)。

動(dòng)態(tài)調(diào)用總是返回 dynamic 作為結(jié)果,所以我們可以自由地這樣鏈接調(diào)用:

dyn.foo().bar.baz()

當(dāng)我們把一個(gè) lambda 表達(dá)式傳給一個(gè)動(dòng)態(tài)調(diào)用時(shí),它的所有參數(shù)默認(rèn)都是 dynamic 類(lèi)型的:

dyn.foo {
    x -> x.bar() // x 是 dynamic
}

使用 dynamic 類(lèi)型值的表達(dá)式會(huì)按照原樣轉(zhuǎn)換為 JavaScript,并且不使用 Kotlin 運(yùn)算符約定。
支持以下運(yùn)算符:

  • 二元:+、 -*、 /、 %、 >、 <、 >=、 <=、 ==、 !====、 !==、 &&||
  • 一元
    • 前置:-、 +、 !
    • 前置及后置:++--
  • 賦值:+=、 -=*=/=、 %=
  • 索引訪問(wèn):
    • 讀:d[a],多于一個(gè)參數(shù)會(huì)出錯(cuò)
    • 寫(xiě):d[a1] = a2,[] 中有多于一個(gè)參數(shù)會(huì)出錯(cuò)

in、 !in 以及 .. 操作對(duì)于 dynamic 類(lèi)型的值是禁用的。

更多技術(shù)說(shuō)明請(qǐng)參見(jiàn)規(guī)范文檔。