可变的地图在Kotlin
我在我的项目中使用NamedParameterJdbcTemplate并传递参数:
MapSqlParameterSource(mapOf( "userId" to userId, "count" to count ))
我不想一直写第一行,我想创建自己的函数,它将采用字符串对的值对:
params( "userId" to userId, "count" to count )
但是当我尝试实现它时,我遇到了泛型的问题(我不在这里发布错误描述):
fun params(vararg pairs: Pair<String, Any>) = MapSqlParameterSource(mapOf(pairs))
你能请正确的实施建议吗?
mapOf
有3个实现:不占用任何东西,取1对,并采取一对可变参数。
由于你的代码中的Array<Pair<String, Any>>
实际上是Array<Pair<String, Any>>
所以mapOf
没有匹配的实现来调用。 这是由于这样的事实,作为java实现它们的可变参数在某些情况下是模棱两可的,所以Kotlin需要明确的参数。
为了使其工作,使用“传播”运算符来指示应该使用可变参数方法。 ( https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs )
fun params(vararg pairs: Pair<String, Any>) = MapSqlParameterSource(mapOf(*pairs))