基于条件在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 。
回答
我不确定有没有一种明显更好的方法;它已经相当简洁明了。
但这是一种替代方法,使用listOfNotNull和takeIf函数来避免显式临时列表:
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()然后删除所有这些空,只留下了那些被满足的错误。