成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Kotlin 1.6.0 正式發(fā)布

番茄西紅柿 / 2986人閱讀

摘要:月日正式發(fā)布了,這個版本根據(jù)一些反饋,將上一版本中的一些實驗的語法特性進(jìn)行了轉(zhuǎn)正。當(dāng)你需要調(diào)用這些時,需要傳入一個函數(shù)類型的實例。中將此默認(rèn)打開。此外還加入了其他一些新的語法特性,詳情可以參考

11月16日 JetBrains 正式發(fā)布了 Kotlin 1.6.0,這個版本根據(jù)一些反饋,將上一版本中的一些實驗的語法特性進(jìn)行了轉(zhuǎn)正。例如

  • Sealed exhaustive whens
  • Suspending functions as supertypes
  • ...

Sealed exhaustive whens

當(dāng)我們在 when 中使用諸如枚舉、密封類/接口等可窮舉類型時,某些情況下可能寫出不安全的代碼

sealed class Contact {   data class PhoneCall(val number: String) : Contact()   data class TextMessage(val number: String) : Contact()   data class InstantMessage(val type: IMType, val user: String) : Contact()}復(fù)制代碼

如上,定義了三個子類的密封類

fun Rates.computeMessageCost(contact: Contact): Cost =   when (contact) { // ERROR: when expression must be exhaustive       is Contact.PhoneCall -> phoneCallCost       is Contact.TextMessage -> textMessageCost   }復(fù)制代碼

此時如果 case 后跟的是一個表達(dá)式, 則如果 case 分支沒有窮舉所有子類,編譯器會報錯

但是如果如果 case 后個的是一個語句,如下

fun sendAnnouncement(contact: Contact, announcement: Announcement) {   when (contact) {       is Contact.PhoneCall -> schedulePhoneCall(contact.number, announcement)       is Contact.TextMessage -> sendTextMessage(contact.number, announcement)   }}復(fù)制代碼

此時即使沒有窮舉所有子類,編譯器也不會報錯,這可能會造成不必要的bug

Kotlin 1.6 在這種情況下,編譯器會給出 Warning ,按計劃 1.7 之后 Warning 會改為 Error,強(qiáng)制開發(fā)者補(bǔ)齊所有分支邏輯,避免出現(xiàn) Bug

Suspending functions as supertypes

Kotlin 中許多 API 都以函數(shù)類型作為參數(shù)。當(dāng)你需要調(diào)用這些 API 時,需要傳入一個函數(shù)類型的實例。而當(dāng)你想在實例中封裝一些可復(fù)用的邏輯時,可以使用函數(shù)類型作為父類創(chuàng)建子類。

但是這種做法目前不適用于掛起函數(shù),你無法繼承一個 suspend 函數(shù)類型的父類

class C : suspend () -> Unit { // Error: Suspend function type is not allowed as supertypes }C().startCoroutine(completion = object : Continuation<Unit> {    override val context: CoroutineContext        get() = TODO("Not yet implemented")    override fun resumeWith(result: Result<Unit>) {        TODO("Not yet implemented")    }})復(fù)制代碼

Kotlin 1.5.30 在 Preveiw 中引入了此特性,可以繼承一個 suspend 的函數(shù)類型

class MyClickAction : suspend () -> Unit {    override suspend fun invoke() { TODO() }}fun launchOnClick(action: suspend () -> Unit) {}復(fù)制代碼

如上,你現(xiàn)在可以這樣調(diào)用 launchOnClick(MyClickAction())

1.6 中將此 feature 默認(rèn)打開。

此外 1.6 還加入了其他一些新的語法特性,詳情可以參考:blog.jetbrains.com/kotlin/2021…

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123972.html

相關(guān)文章

  • 棄 Java 而使用 Kotlin 的你后悔了嗎?| kotlin將會是最好的開發(fā)語言

    摘要:本報告受訪者的工作經(jīng)驗比參加調(diào)查的開發(fā)者要少一些。這其中不乏有因品牌吸引而投身于開發(fā)的學(xué)生,據(jù)調(diào)查顯示,早期,主要由經(jīng)驗豐富的專業(yè)開發(fā)者使用,如今大批年輕的開發(fā)者及學(xué)生開始涌入。 自從 2011 年發(fā)布以來,Kotlin 憑借強(qiáng)大的功能在開發(fā)者中的歡迎程度與日俱增。且在一年前,Google 宣布 Kotlin 正式成為 Android 官方開發(fā)語言,由此引發(fā)了從 Java 遷移到 Ko...

    ad6623 評論0 收藏0
  • 前端每周清單第 38 期: Node 9 發(fā)布,Kotlin 與 React,Netflix 架構(gòu)解

    摘要:發(fā)布本周正式發(fā)布,包含了一系列的特性提升與問題修復(fù),同時也在不斷致力于將打造地更為輕巧與高性能。當(dāng)然,姜振勇老師還會介紹的多種服務(wù),包括大數(shù)據(jù)網(wǎng)絡(luò)和安全,展現(xiàn)彈性安全和高可擴(kuò)展性的全方位能力。 showImg(http://upload-images.jianshu.io/upload_images/1647496-2ce7598e6987d9af.jpg?imageMogr2/aut...

    Carbs 評論0 收藏0
  • Kotlin 新版來了,支持跨平臺!

    摘要:還有一個好消息正式發(fā)布,做了對的支持。支持的目標(biāo)平臺有位。該版本也增加了對工程的實驗性質(zhì)的支持。于此同時微軟也在大力發(fā)展自己的語言的跨平臺,并且也在支持開發(fā)語言的各種工具,其實是在對和提出了挑戰(zhàn)。點(diǎn)擊上方開發(fā)者技術(shù)前線,選擇星標(biāo) 來源:開發(fā)者技術(shù)前線 作者:Tamic | 編輯: 可可 谷歌在今年的 I/O 大會上宣布,Kotlin 編程語言現(xiàn)在是 Android 應(yīng)用程序開發(fā)人員的首選...

    szysky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<