Kotlin ラムダ構文に混乱しています。
最初に、私は持っています
.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") }
)
型を指定せずにラムダを書く方法はありますか? ( Action1<kotlin.Throwable>
, Action0
)
編集 1
class GroupRecyclerViewAdapter(private val groups: MutableList<Group>,
private val listener: OnListFragmentInteractionListener?) :
RecyclerView.Adapter<GroupRecyclerViewAdapter.ViewHolder>(), Action1<ArrayList<Group>> {