有没有办法在Kotlin中扩展一个函数?

我将最好用代码解释场景。

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) ... .... } 

如果你看看所有的function,那么所有的function都有一套共同的参数和可变参数。 有没有办法把抽象出的常用参数抽象出来,以便我不必在所有函数中重复它们? 编辑

@Google已经在下面给出了一个很好的答案。 但是我正在寻找一种可以使用某种语言function来解决的方法。 例如在斯卡拉它可以用隐式解决(我不知道,虽然)?

只需创建拥有通用参数的类:

 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) } 

你可以使用Kotlin的任何类 。 任何是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) { } .... .... } } 

更新:在面向对象的方法,你可以做这样的事情:

 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) { } .... .... } } 

希望这会对你有所帮助。 🙂