我刚开始Kotlin,所以请保持友好:)
我有一个负责获取一些数据并通知主要活动其需要更新其UI的类.
所以我在DataProvIDer.kt中做了一个函数:
fun getPeople(fromNetwork: Boolean, results: ((persons: Array<Person>, error: MyError?) -> Unit)) { // do some stuff stuff val map = hashMapOf( "John" to "Doe", "Jane" to "Smith" ) var p = Person(map) val persons: Array <Person> = arrayOf (p) results(persons, null) }
所以我想从我的活动中调用它,但是我找不到正确的语法! :
DataProvIDer.getPeople( true, results = )
我已经尝试了很多事情,但是我只想获取一组人和我的可选错误,以便可以更新UI.
目标是在我的数据提供程序中执行异步代码,以便我的活动可以等待它.
有任何想法吗 ?非常感谢您的帮助.
解决方法:
这实际上取决于您如何定义回调方法.如果使用独立功能,请使用::运算符.首先(当然),我应该解释语法:
(//these parenthesis are technically not necessary(persons: Array<Person>, error: MyError?)//defines input arguments: an Array of Person and a nullable MyError -> Unit//defines the return type: Unit is the equivalent of voID in Java (meaning no return type))
因此该方法定义为:
fun callback(persons: Array<CustomObject>, error: Exception?){ //Do whatever}
你这样称呼:
DataProvIDer.getPeople( true, results = this::callback)
但是,如果使用匿名回调函数,则略有不同.这也使用lambda:
getPeople(true, results={/*bracket defines a function. `persons, error` are the input arguments*/persons, error -> { //do whatever }})
总结 以上是内存溢出为你收集整理的java-使用Kotlin进行参数回调全部内容,希望文章能够帮你解决java-使用Kotlin进行参数回调所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)