如何处理 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的可能的nullreturn呢?我尝试使用 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

further more