[英]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.