android – lambda表达式未使用

android – lambda表达式未使用,第1张

概述在使用 Android的Switch时,我附加了一个setOnCheckedChangeListener并得到了这个警告 The lambda expression is unused. If you mean a block, you can use ‘run {…}’ 这里是代码片段: switchAction.setOnCheckedChangeListener({ _, isChe 在使用 Android的Switch时,我附加了一个setonCheckedchangelistener并得到了这个警告

The lambda Expression is unused. If you mean a block,you can use ‘run {…}’

这里是代码片段:

switchAction.setonCheckedchangelistener({    _,isChecked ->    {        preferences.userStatus = isChecked        switchToggleVisibility(isChecked)        if (isChecked) {            fetchStats()            getorders()        } else {            releaSEOrder()        }    }})

使用run确实可以修复此警告,但是有人知道这背后的原因吗? lambda表达式如何未使用?

解决方法 你将Java的lambda表示法与Kotlin的lambda表示法混合,创建一个lambda,在这种情况下返回另一个嵌套的lambda.正确和惯用的语法如下所示:
switchAction.setonCheckedchangelistener { _,isChecked ->    preferences.userStatus = isChecked    switchToggleVisibility(isChecked)    if (isChecked) {        fetchStats()        getorders()    } else {        releaSEOrder()    }}

消除所有噪音,正常的lambda看起来像这样:

{ arg1,arg2 -> returnValue }

你这样做了:

{ arg1,arg2 -> { returnValue } }

哪个也可以这样写:

{ arg1,arg2 -> { -> returnValue } }

这种表示法使得lambda不返回返回值更加清楚,但返回另一个没有返回返回值的参数的lambda.

通常,这会被编译器捕获为错误的返回类型,但在您的情况下,不使用lambda的返回值.所以,你只是创建内部lambda而不返回或运行它,这就是你得到警告的原因.

总结

以上是内存溢出为你收集整理的android – lambda表达式未使用全部内容,希望文章能够帮你解决android – lambda表达式未使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1138290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存