【发布时间】:2016-01-23 18:14:59
【问题描述】:
我对 Kotlin lambda 语法感到困惑。
一开始我有
.subscribe(
{ println(it) }
, { println(it.message) }
, { println("completed") }
)
效果很好。
然后我将 onNext 移动到另一个名为 GroupRecyclerViewAdapter 的类,它实现了Action1<ArrayList<Group>>。
.subscribe(
view.adapter as GroupRecyclerViewAdapter
, { println(it.message) }
, { println("completed") }
)
但是,我得到了错误:
Error:(42, 17) Type mismatch: inferred type is () -> ??? but rx.functions.Action1<kotlin.Throwable!>! was expected
Error:(42, 27) Unresolved reference: it
Error:(43, 17) Type mismatch: inferred type is () -> kotlin.Unit but rx.functions.Action0! was expected
我可以通过更改为来修复错误:
.subscribe(
view.adapter as GroupRecyclerViewAdapter
, Action1<kotlin.Throwable> { println(it.message) }
, Action0 { println("completed") }
)
有没有办法在不指定类型的情况下编写 lambda? (Action1<kotlin.Throwable>, Action0)
Note: subscribe is RxJava method
编辑 1
class GroupRecyclerViewAdapter(private val groups: MutableList<Group>,
private val listener: OnListFragmentInteractionListener?) :
RecyclerView.Adapter<GroupRecyclerViewAdapter.ViewHolder>(), Action1<ArrayList<Group>> {
【问题讨论】:
-
看起来像类型引用错误
-
如果您可以将错误消息包含为文本,那就太好了,这将有助于其他人找到此帖子。您可以编译,以获得您在编辑器中看到的相同错误。然后剪切粘贴
-
@JaysonMinard 添加。谢谢