Kotlinでこのようなことを行う方法はありますか?
mapOf(
"key1" to var1,
"key2" to var2,
if(var3 > 5) "key3" to var3
)
または、マップの作成後にキー「key3」を追加するのが唯一の方法ですか?何らかの条件が満たされた場合にのみ、アイテムをマップに追加したいと思います。
これを行う1つの方法は、 listOfNotNull(...)
+ .toMap()
を使用し、スキップする場所にnull
sを配置することです。アイテム:
val map = listOfNotNull(
"key1" to var1,
"key2" to var2,
if (var3 > 5) "key3" to var3 else null
).toMap()
さらに、 .takeIf { ... }
ただし、条件に関係なくペアを評価するため、ペア式が関数を呼び出すと、とにかく呼び出されることに注意してください。
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())
)