kotlin如何将参数映射到具有变量名称和值的LinkedMultiValueMap



所以我有一个函数,它有很多参数,比如这个

fun registerDomain(
domain: String,
period: String,
dns1: String,
dn2: String,
registrant: String,
admin: String,
tech: String,
billing: String
) {
val request = LinkedMultiValueMap<String, String>()
request.add("domain", domain)
request.add("period", period)
request.add("dns1", dns1)
request.add("dns2", dn2)
request.add("registrant", registrant)
request.add("tech", tech)
request.add("billing", billing)
return _request(resources.DOMAIN, "registerDomain", request)
}

因此,为了发出请求,我必须将这些参数映射到LinkedMultiValueMap,以便在请求体中使用,但我厌倦了手动添加每个参数,如果它有更多的参数,代码就会更长。将参数映射到LinkedMultiValueMap也是如此。我期待像这样的

function registerDomain(parameters){
val request = LinkedMultiValueMap<String, String>()
for(param in parameters){
request.add(::param.name, ::param.get())
}
return _request(Resources.DOMAIN, "registerDomain", request)
}

或者是为了缩短代码。

这样行吗?

private fun registerDomain(parameters: List<Pair<String, String>>(): Map<String, String>{
return parameters.toMap()
}

然后像一样呼叫

private fun makeCallToRegister(){
val items = listOf(
"domatin" to "192.168.1.1", 
"domatin" to "192.168.1.1", 
"domatin" to "192.168.1.1"
)
val request = registerDomain(items)
}

private fun justMapItems(){
val request = listOf(
"domatin" to "192.168.1.1", 
"domatin" to "192.168.1.1", 
"domatin" to "192.168.1.1"
).toMap()
}

最新更新