Android 如何将函数中的参数作为参数传递给另一个参数,以及如何在kotlin中创建genric函数

Android 如何将函数中的参数作为参数传递给另一个参数,以及如何在kotlin中创建genric函数,android,kotlin,generics,Android,Kotlin,Generics,我想在函数中传递参数,但它给出错误,此语法保留供将来使用;要调用引用,请将其括在括号中:(foo::bar)(args)。此外,我还想制作一个genric运行函数,它可以接受任何参数,例如Int、String等。在这个示例代码中,我将sumInt(2)发送到运行函数,我还想发送串联(“John”)。任何人都知道如何做到这一点。我试着搜索 在更新anwser并使用lamba之后 fun main(vararg args: String) { runFunction { sumInt(2)

我想在函数中传递参数,但它给出错误,此语法保留供将来使用;要调用引用,请将其括在括号中:(foo::bar)(args)。此外,我还想制作一个genric运行函数,它可以接受任何参数,例如Int、String等。在这个示例代码中,我将sumInt(2)发送到运行函数,我还想发送串联(“John”)。任何人都知道如何做到这一点。我试着搜索

在更新anwser并使用lamba之后

fun main(vararg args: String) {
    runFunction { sumInt(2) }
    runFunction { concatenateString("John") }
}

fun <T: Any> runFunction(action: () -> (T)) {
    println(action())
}

private fun sumInt(a: Int): Int {
    return a + 2
}

private fun concatenateString(a: String): String {
    return "$a welcome"
}
fun main(vararg args:String){
运行函数{sumInt(2)}
runFunction{concatenateString(“John”)}
}
fun runFunction(动作:()->(T)){
println(action())
}
私人娱乐中心(a:Int):Int{
返回a+2
}
私人娱乐串(a:String):String{
返回“$a欢迎”
}

如果要向函数传递参数,则需要将函数调用包装到函数中。lambda函数是最简洁的方法

fun main(vararg args: String) {
    runFunction { sumInt(2) }
}

谢谢回复@Tenfour04我运行了你的代码它运行正常它没有给出错误,但我没有得到总和取而代之我得到了一些奇怪的答案()->kotlin.UnitYour
runFunction()
function打印函数对象本身,而不是调用它的结果。如果要打印调用函数时返回的内容,则必须调用它。将该函数的内容更改为
print(action())
。我更新了我的代码,它将打印kotlin。Unit@tenfour04函数签名中定义的函数必须返回Unit,因此调用函数时会忽略
sumInt
的结果并返回Unit。如果希望它返回Int,则需要更改签名。i、 e.
fun runFunction(action:()->Int){
谢谢@Tenfour04我得到了它