国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Kotlin 1.6.0 正式發布

番茄西紅柿 / 2977人閱讀

摘要:月日正式發布了,這個版本根據一些反饋,將上一版本中的一些實驗的語法特性進行了轉正。當你需要調用這些時,需要傳入一個函數類型的實例。中將此默認打開。此外還加入了其他一些新的語法特性,詳情可以參考

11月16日 JetBrains 正式發布了 Kotlin 1.6.0,這個版本根據一些反饋,將上一版本中的一些實驗的語法特性進行了轉正。例如

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

Sealed exhaustive whens

當我們在 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()}復制代碼

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

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

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

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

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

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

Kotlin 1.6 在這種情況下,編譯器會給出 Warning ,按計劃 1.7 之后 Warning 會改為 Error,強制開發者補齊所有分支邏輯,避免出現 Bug

Suspending functions as supertypes

Kotlin 中許多 API 都以函數類型作為參數。當你需要調用這些 API 時,需要傳入一個函數類型的實例。而當你想在實例中封裝一些可復用的邏輯時,可以使用函數類型作為父類創建子類。

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

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")    }})復制代碼

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

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

如上,你現在可以這樣調用 launchOnClick(MyClickAction())

1.6 中將此 feature 默認打開。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123972.html

相關文章

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

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

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

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

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

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

    szysky 評論0 收藏0

發表評論

0條評論

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