我有一个对象列表,例如:
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 ?: ""
但这仍然无法编译。
答案 0 :(得分:1)
将其更改为(因为除非无法再次将其处理为可为空(id
,否则它无法从空对象获取String?
):
val companyId = companies.find { it.name == "IBM" }?.id ?: ""
如果您确定有一个名称为“ IBM”的公司,则可以使用!!
(不推荐):
val companyId = companies.find { it.name == "IBM" }!!.id