Как мне преобразовать мой код в лямбда-выражение? - PullRequest
0 голосов
/ 27 ноября 2018

Я использую следующий код в своей функции, так что это часть кода Rxjava, где я подписываюсь.Есть ли способ, которым я могу преобразовать этот код в лямбда-выражение?

 object : Mysubscriber<MyEntry>() {
                                var result: MYEntry? = null

                                override fun onComplete() {
                                    result?.let {
                                        val something = Something(title = it.getField<String>(MyConstants.TITLE_KEY),
                                                somethingImageAsset = it.getField<MyAsset>(MyConstants.IMAGE_KEY),
                                                bodyText = it.getField<String>(MyConstants.BODY_TEXT_KEY))
                                        view?.updateMySpace(something)
                                    }
                                }

                                override fun onError(e: Throwable) {
                                    Timber.e(e)
                                }

                                override fun onNext(entry: MyEntry) {
                                    result = entry
                                }
                            }

Просто к вашему сведению, функция RXjava для приведенного выше кода:

myvar.observe(MyEntry::class.java)
                .one(entryId)
                .applySchedulers()
                .applyOpBeforeAfter(showProgress, hideProgress)
                .subscribe(
                  "above code" )

Есть идеи, как легко преобразовать ее в лямбда-выражение?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы можете достичь этого, нажав Alt + Enter.Остальная часть работы сделана IntelliJ.

0 голосов
/ 27 ноября 2018

Если вы используете Kotlin, вы можете сделать

    val compositeDisposable = CompositeDisposable()
    var result: MYEntry? = null

    val disposable = myvar.observe(MyEntry::class.java)
                    .one(entryId)
                    .applySchedulers()
                    .applyOpBeforeAfter(showProgress, hideProgress)
                    .subscribeBy(
                       onNext = {
                           result = it 
                       },
                       onError = {
                           Timber.e(e)
                       },
                       onComplete = {
                           result?.let {
                                        val something = Something(title = it.getField<String>(MyConstants.TITLE_KEY),
                                                somethingImageAsset = it.getField<MyAsset>(MyConstants.IMAGE_KEY),
                                                bodyText = it.getField<String>(MyConstants.BODY_TEXT_KEY))
                                        view?.updateMySpace(something)
                                    }
                       }
                    )
    compositeDisposable.add(disposable)
    compositeDisposable.dispose() // Dispose it in onStop() or onDestroy()

ИЛИ

val compositeDisposable = CompositeDisposable();
var result: MYEntry? = null

val disposable = myvar.observe(MyEntry::class.java)
                        .one(entryId)
                        .applySchedulers()
                        .applyOpBeforeAfter(showProgress, hideProgress)
                        .subscribe(
                           {
                               result = it 
                           },
                           {
                            Timber.e(e)   
                           },
                           {
                               result?.let {
                                            val something = Something(title = it.getField<String>(MyConstants.TITLE_KEY),
                                                    somethingImageAsset = it.getField<MyAsset>(MyConstants.IMAGE_KEY),
                                                    bodyText = it.getField<String>(MyConstants.BODY_TEXT_KEY))
                                            view?.updateMySpace(something)
                                        }
                           }
                        )
compositeDisposable.add(disposable)
compositeDisposable.dispose() // Dispose it in onStop() or onDestroy()

Для CompositeDisposable:

private var compositeDisposable = CompositeDisposable()

    fun getCompositeDisposable(): CompositeDisposable {
        if (compositeDisposable.isDisposed)
            compositeDisposable = CompositeDisposable()
        return compositeDisposable
    }

    fun addDisposable(disposable: Disposable) {
        getCompositeDisposable().add(disposable)
    }

    fun dispose() {
        getCompositeDisposable().dispose()
    }
...