如何处理Kotlin的find函数返回的空值?

时间:2019-11-01 09:25:19

标签: kotlin kotlin-null-safety

我有一个对象列表,例如:

val companies = listOf(
        Company(id = "1", name = "IBM"), 
        Company(id = "2", name = "Apple"))

接下来,我想通过name条件从此列表中找到一个对象,并获取找到的对象的id字段的值。因此,我正在使用find函数在列表上进行调用:

val companyId = companies.find { it.name == "IBM" }.id

但是此代码无法与一起编译。在可为空的接收器上仅允许安全呼叫或非呼叫呼叫。因此,我应该如何处理null可能返回的find?我尝试使用Elvis运算符返回否则为空的String,例如:

val companyId = companies.find { it.name == "IBM" }.id ?: ""

但这仍然无法编译。

1 个答案:

答案 0 :(得分:1)

将其更改为(因为除非无法再次将其处理为可为空(id,否则它无法从空对象获取String?):

val companyId = companies.find { it.name == "IBM" }?.id ?: ""

如果您确定有一个名称为“ IBM”的公司,则可以使用!!(不推荐):

val companyId = companies.find { it.name == "IBM" }!!.id

further more