【发布时间】:2018-06-27 06:53:13
【问题描述】:
在我的应用程序中,我需要使用特定框架执行网络调用。 因为每个网络调用都需要在单独的线程上执行,所以我希望有一个启动新线程的函数执行调用并返回一个对象。 为此,我尝试使用 HigherOrderFunctions,但直到现在我才发现如何将函数声明为带有可变数量参数的参数。
为了给你一个想法,我想要这样的东西:
fun Client.performNetworkCall(calledFunction:(vararg Object)->Object):Object{
Thread(Runnable {
calledFunction
}).start()
//return function results
}
但是声明这样的函数似乎是不可能的。 在科特林有可能吗? 当我需要执行网络调用时,我想避免每次在我的代码中创建新线程。这样我就可以写出这样的东西了
client.performNetworkCall{ bean.createNewUser(User("","","Gosia","gosiak@gmail.com","pass"))}
bean 是我的接口的对象,它有一个函数 createNewUser。函数createNewUser在服务器上实现,执行后会返回一些结果。
如果使用高阶函数无法实现我想要做的事情,你能否给我一个提示,我还能做些什么来得到我上面描述的东西?
【问题讨论】:
-
你总是可以传入一个
Array<Object>,不管怎样,可变参数语法只是糖。 -
你为什么不用 RxJava?
标签: android multithreading kotlin higher-order-functions