如何将我的代码转换为lambda表达式?

时间:2018-11-27 12:05:20

标签: android lambda kotlin rx-java2

我在函数中使用以下代码,因此这是我订阅的Rxjava代码的一部分。有没有办法将这段代码转换为lambda表达式?

 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" )

任何想法如何轻松地将其转换为lambda表达式?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您正在使用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()

OR

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()
    }

答案 1 :(得分:0)

您可以通过按Alt + Enter来实现。其余工作由IntelliJ完成。