如何处理 Kotlin 的 find 函数中的 null return?
How to handle null return from Kotlin's find function?
我有一个对象列表,例如:
val companies = listOf(
Company(id = "1", name = "IBM"),
Company(id = "2", name = "Apple"))
接下来,我想通过 name
条件从此列表中找到一个对象,并获取找到的对象的 id
字段的值。所以,我在列表上使用 find
函数调用:
val companyId = companies.find { it.name == "IBM" }.id
但是这个不能用在可为空的接收器上只允许安全或非调用调用。那么,我应该如何处理来自find
的可能的null
return呢?我尝试使用 Elvis 运算符 return 一个空字符串,否则,例如:
val companyId = companies.find { it.name == "IBM" }.id ?: ""
但仍然无法编译。
将其更改为(因为它无法从空对象中获取 id
,除非您再次将其处理为可空对象 (String?
)):
val companyId = companies.find { it.name == "IBM" }?.id ?: ""
如果您确定有公司名称为"IBM",您可以使用!!
(不推荐):
val companyId = companies.find { it.name == "IBM" }!!.id
我有一个对象列表,例如:
val companies = listOf(
Company(id = "1", name = "IBM"),
Company(id = "2", name = "Apple"))
接下来,我想通过 name
条件从此列表中找到一个对象,并获取找到的对象的 id
字段的值。所以,我在列表上使用 find
函数调用:
val companyId = companies.find { it.name == "IBM" }.id
但是这个不能用在可为空的接收器上只允许安全或非调用调用。那么,我应该如何处理来自find
的可能的null
return呢?我尝试使用 Elvis 运算符 return 一个空字符串,否则,例如:
val companyId = companies.find { it.name == "IBM" }.id ?: ""
但仍然无法编译。
将其更改为(因为它无法从空对象中获取 id
,除非您再次将其处理为可空对象 (String?
)):
val companyId = companies.find { it.name == "IBM" }?.id ?: ""
如果您确定有公司名称为"IBM",您可以使用!!
(不推荐):
val companyId = companies.find { it.name == "IBM" }!!.id