簡體   English   中英

我可以在 Kotlin 中使用帶有內聯變量聲明的 `is` 運算符嗎?

[英]Can I use `is` operator with inline variable declaration in Kotlin?

這是我學習 Kotlin 的第一天,我有這樣的代碼:

val tagInfo : UHFTAGInfo? = rfid.readTagFromBuffer()
if (tagInfo != null) {
    val msg = hnd.obtainMessage()
    msg.obj = tagInfo
    hnd.sendMessage(msg)
}

我可以通過從rfid.readTagFromBuffer()獲取一個值並檢查它是否為 null 將其減少一行嗎?

在現代 C# 中,我們可以這樣做:

if (rfid.readTagFromBuffer() is UHFTagInfo tagInfo){
    val msg = hnd.obtainMessage()
    msg.obj = tagInfo
    hnd.sendMessage(msg)
}

我試圖在這里找到答案:

https://kotlinlang.org/docs/typecasts.html

但沒有成功。 所以我假設 Kotlin 不提供這樣的功能,但也許有類似的東西可以將這兩條線減少到一條?

我們可以使用scope 函數之一,例如let()安全調用運算符

rfid.readTagFromBuffer()?.let { tagInfo ->
    val msg = hnd.obtainMessage()
    msg.obj = tagInfo
    hnd.sendMessage(msg)
}

?. 確保僅當readTagFromBuffer()的結果不是 null 並且let() let()調用提供的 lambda 作為第一個參數傳遞標簽信息時才調用 let()。

Kotlin 的設計方式不是引入許多不同的功能和語法來解決非常具體的問題,而是我們擁有基本而強大的構建塊,如 scope 函數,我們可以使用它們來滿足不同類型的需求。 無需為這種情況引入非常具體的語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM