基于条件在Kotlin中创建列表

目前我有这个乐趣:

private fun validateArguments(city: String, state: String, country: String, zip: String): List<String> {

        val list: MutableList<String> = mutableListOf()
        if (city.isNullOrBlank()) list.add("Invalid city")
        if (state.isNullOrBlank()) list.add("Invalid state")
        if (country.isNullOrBlank()) list.add("Invalid country")
        if (zip.isNullOrBlank()) list.add("Invalid zip code")

        return list.toList()
}

我想知道是否有更优雅的方式来创建列表。我猜最终列表也可能是一个 MutableList 。

回答

我不确定有没有一种明显更好的方法;它已经相当简洁明了。

但这是一种替代方法,使用listOfNotNulltakeIf函数来避免显式临时列表:

private fun validateArguments(city: String, state: String, country: String, zip: String)
    = listOfNotNull(
        "Invalid city".takeIf{ city.isNullOrBlank() },
        "Invalid state".takeIf{ state.isNullOrBlank() },
        "Invalid country".takeIf{ country.isNullOrBlank() },
        "Invalid zip code".takeIf{ zip.isNullOrBlank() })

takeIf()如果不满足条件,则此处返回 null;并且listOfNotNull()然后删除所有这些空,只留下了那些被满足的错误。


以上是基于条件在Kotlin中创建列表的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>