gpt4 book ai didi

android - Kotlin 如何调用作为参数传递的方法

转载 作者:搜寻专家 更新时间:2023-11-01 07:41:26 25 4
gpt4 key购买 nike

在javasript中,如果我们知道方法的名称,我们可以将它作为参数传递并像这样调用它

function foo(methodName){
methodName()
}

function doSomething(){
console.log("DO Something")
}
foo(doSomething)

我想在 kotlin 中做这样的事情,考虑一下我有这样的类(class)

Class DataModel{}
Class Foo (){
fun build(data:DataModel,val onThis:AnyMethod){
if(data.size>0){
val param = somevalue
onThis(param)
}
}
}

然后在我的 Activity 中,例如我有 doThis 方法

class MainActivity : AppCompatActivity(){
//rest of code
fun doThis(param:Int){
Log.e("DO","THIS ${param}")
}
}

在我的 OnCreateView 中我想调用这样的东西

val a= new Foo()
a.build(data, doThis)

为此,我的 Foo 类应该如何设置?

最佳答案

val onThis:AnyMethod 更改为 onThis: (Int) -> Unit,即像这样:

class Foo {
fun build(data: DataModel, onThis: (Int) -> Unit) {
if (data.size > 0) {
val param = somevalue
onThis(param)
}
}
}

然后你可以这样做

// val mainActivity: MainActivity = ...

val a = Foo()
a.build(data, mainActivity::doThis)

或者,如果您从 MainActivity 的成员函数中运行该代码:

val a = Foo()
a.build(data, ::doThis)

有关如何传递 lambdas/函数/成员函数的更多信息,请参见 official documentation .

关于android - Kotlin 如何调用作为参数传递的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58161270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com