Kotlin可选,或类似的东西

时间:2019-04-30 07:15:34

标签: sql kotlin null

我发现Kotlin令人着迷,但是我也很难找到任何有关如何正确处理空值的足够理解的文档。

我是Java开发人员,所以我应该可以很轻松地转向kotlin,但是我发现自己一直在为简单的东西而苦苦挣扎。

以下SQL查询:

 @Query(value = "FROM Address a WHERE a.userId = :userId")
 fun findAddressByuserId(@Param("userId") userId: String) : List<Address>?

我能以某种方式摆脱吗?在List<Address>?的末尾? SQL可能不返回任何内容,因此产生null。

,在查询之后,我尝试映射结果,但由于列表为空,现在需要!!

customerAddresses!!.map { a -> a.email = email.email }

谢谢!

1 个答案:

答案 0 :(得分:4)

如果SQL不返回任何内容,则对应于找到的0个项目,即空列表,而不是根本没有列表。我还将对它进行相应的建模:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: view.bounds.width, height: 500)
    }

这也将使您在使用@Query(value = "FROM Address a WHERE a.userId = :userId") fun findAddressByUserId(@Param("userId") userId: String) : List<Address> 时省去它。

我不知道您使用的库是什么,但是如果它严格不允许返回类型不可为空,则可以编写一个包装函数,仅调用另一个函数。在这种情况下,请使用!!(Elvis)运算符:

?: