Kotlin-46.JavaScript動態類型(Dynamic Type)

官方文檔: http://kotlinlang.org/docs/reference/dynamic-type.html

動態類型(Dynamic Type)

Kotlin在面向JVM平臺的代碼中不支持動態類型(說白了就是java不支持動態類型)

Kotlin是一種靜態類型的語言,但仍然需要與無類型或松散類型的語言互操作(例如JavaScript系統)!
為了幫助這些場景,kotLin語言中可用dynamic類型:
    val dyn: dynamic = ...
dynamic類型基本關閉了Kotlin類型檢查系統:
    dynamic類型類型的值可以賦值給任何變量或作為參數傳遞到任何位置;
    任何值都可以賦值給dynamic類型變量,或者傳遞給一個接受dynamic作為參數的函數;
    null檢查禁用;

dynamic最特別的特性是,可以對dynamic變量調用任何屬性或以任意參數調用任何函數:
    val dyn: dynamic = ...
    dyn.whatever(1, "foo", dyn) // 'whatever'沒有定義
    dyn.whatever(*arrayOf(1, 2, 3))

在JavaScript平臺上,該kotlin代碼按原樣編譯: 在生成的JavaScript代碼中,Kotlin的dyn.whatever(1)變為dyn.whatever(1)    
當在dynamic類型的值上調用,可能需要使用@JsName注解為要調用的函數分配名稱!

函數動態調用總是返回dynamic,所以可以自由地鏈式調用:
    dyn.foo().bar.baz()

把lambda表達式傳給一個動態調用時,它的所有參數默認都是dynamic類型:
    dyn.foo {
        x -> x.bar() // x 是 dynamic
    }

使用dynamic類型值的表達式會按原樣轉換為JavaScript,并且不使用Kotlin約定的運算符,支持以下運算符:
    二元(binary):            +, -, *, /, %, >, < >=, <=, ==, !=, ===, !==, &&, ||
    一元(unary)
        前置(prefix):         -, +, !
        前置及后置(postfix):  ++, --
    賦值(assignments):        +=, -=, *=, /=, %=
    索引訪問(indexed access):
        讀(read):             d[a], []多于一個參數會出錯
        寫(write):            d[a1] = a2, []多于一個參數會出錯

注意: in, !in以及..操作符,對于dynamic類型是被禁用(在JavaScript平臺被禁用)!

簡書:http://www.lxweimin.com/p/5f07f026edcf
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/75579094
GitHub博客:http://lioil.win/2017/07/20/Kotlin-JS-dynamic-type.html
Coding博客:http://c.lioil.win/2017/07/20/Kotlin-JS-dynamic-type.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • 大部分的后端會很很鄙視前端。我也不知道為什么,可能大部分人都會覺得腳本語言根本不算語言。 大多人 會叫我們切圖仔,...
    小黑的眼閱讀 3,381評論 0 15
  • 《Kotlin 極簡教程》第一章 Kotlin簡介 科特林島(Котлин)是一座俄羅斯的島嶼,位于圣彼得堡以西約...
    光劍書架上的書閱讀 3,109評論 8 50
  • 今天老師表揚你,拿了全班第一。這可是你第一次拿到全班第一,你迫不急待的想把這個好消息告訴媽媽。放學后,你一見到媽媽...
    danielle_a閱讀 398評論 0 1
  • 今天認識了一位幽默而博學的老師,大家稱他為國哥,他用類似企業管理模式的理念管理著班級,給我們詳細解讀了這種模式的精...
    史改花閱讀 372評論 0 6
  • 當我真誠地夸贊一個人時,身旁的朋友打趣道,馬屁精孤立你。我微微一笑,毫不在意。由衷地欣賞別人身上的某個點,所以我...
    神瑾叨叨閱讀 399評論 0 8