Kotlin:创建地图时的条件项目
在Kotlin有没有办法做这样的事情?
mapOf( "key1" to var1, "key2" to var2, if(var3 > 5) "key3" to var3 )
或者唯一的方法是在地图创建后添加键“key3”? 我只想在某些条件满足的情况下将项目添加到地图中。
一种方法是使用listOfNotNull(...)
+ .toMap()
并把null
放在你想要跳过的地方:
val map = listOfNotNull( "key1" to var1, "key2" to var2, if (var3 > 5) "key3" to var3 else null ).toMap()
您可以另外使用.takeIf { ... }
,但是请注意,无论条件如何,它都会评估一对,所以如果pair表达式调用一个函数,它将被调用:
val map = listOfNotNull( /* ... */ ("key3" to var3).takeIf { var3 > 5 } ).toMap()
你可以使用传播运算符 *
来做到这一点:
val map = mapOf( "key1" to var1, "key2" to var2, *(if(var3 > 5) arrayOf("key3" to var3) else arrayOf()) )