我有一个定义如下的函数:
getTypeB(id: String,
valA1: TypeA = defaultA1
valA2: TypeA = defaultA2,
valA3: TypeA = defaultA3 ) : TypeB {}
我知道使用命名参数,我只能使用某些val调用上述函数,例如
getTypeB(id,
valA2 = someValueOfTypeA )
我的问题是,这里可以用任何方式使文字valA2
成为变量。我希望能够从其他地方调用getTypeB
,在这些地方除非传入参数,否则他们将不知道参数实参名称。那么有没有办法为命名实参使用变量?如果没有,我们还有其他选择吗?
答案 0 :(得分:0)
您可以使用map
进行此操作:
fun getTypeB(id: String,
varsMap: Map<String, TypeA>): TypeB {
val valA1: TypeA = varsMap.getOrElse("valA1") { defaultA1 }
val valA2: TypeA = varsMap.getOrElse("valA2") { defaultA2 }
val valA3: TypeA = varsMap.getOrElse("valA3") { defaultA3 }
//
}
val args = mapOf(
"valA1" to someValueOfTypeA,
"valA2" to someValueOfTypeA)
getTypeB(id, args)