我最好用代码解释一下这个场景。
object Helper{
fun getValuesForBlah1(constParam1 : Boolean, constParam2 : String, constParam3 : Float, varParam : Int)
fun getValuesForBlah2(constParam1 : Boolean, constParam2 : String, constParam3 : Float, varParam : SomeClass)
fun getValuesForBlah3(constParam1 : Boolean, constParam2 : String, constParam3 : Float, varParam : SomeOtherClass)
...
....
}
如果查看所有函数,那么所有函数都有一组公共参数和rest变量参数。有没有办法告诉抽象出常见的参数,以便我不必在所有功能中重复它们?
的修改
@Google在下面给出了一个很好的答案。但我正在寻找一种可以使用某种语言功能解决它的方法。例如,在scala中,它可以使用隐式解决(我不确定)?
答案 0 :(得分:2)
只需创建包含常用参数的类:
object Helper {
data class Param(
val constParam1: Boolean,
val constParam2: String,
val constParam3: Float
)
fun getValuesForBlah1(param: Param, varParam : Int)
fun getValuesForBlah2(param: Param, varParam : SomeClass)
fun getValuesForBlah3(param: Param, varParam : SomeOtherClass)
}
答案 1 :(得分:1)
你可以使用Kotlin的Any Class。任何都是Kotlin类层次结构的根。每个Kotlin类都有Any作为超类。在你的情况下,你可以实现你的方法,如:
object Helper {
fun getValuesForBlah(constantParam1: Boolean, constantParam2: String, constantParam3: Float, varParam: Any) {
if (varParam is Int) {
} else if (varParam is SomeClass) {
} else if (varParam is SomeOtherClass) {
}
....
....
}
}
更新: 在OOP方法中,您可以执行以下操作:
object Helper {
data class Param(
val constParam1: Boolean,
val constParam2: String,
val constParam3: Float,
var varParam: Any
)
fun getValuesForBlah(param: Param){
if (param.varParam is Int) {
} else if (param.varParam is SomeClass) {
} else if (param.varParam is SomeOtherClass) {
}
....
....
}
}
希望它对你有所帮助。 :)