我有这个代码:
fun bind(item: ReturnRequestRowVO) {
returnRequestInfoDate?.text = item.dateReturnPurchaseText?.let {
HtmlCompat.fromHtml(it, HtmlCompat.FROM_HTML_MODE_COMPACT)
}
setupReturnRequestBtn(item)
}
Android Studio建议:
如果应用更改:
fun bind(item: ReturnRequestRowVO) {
item.dateReturnPurchaseText?.let {
HtmlCompat.fromHtml(it, HtmlCompat.FROM_HTML_MODE_COMPACT)
}.also { returnRequestInfoDate?.text = it }
setupReturnRequestBtn(item)
}
赋值和赋值表达式的区别是什么?
1条答案
按热度按时间2hh7jdfx1#
赋值语句是将值设置为某个值的语句,而表达式是返回某个值的语句。
您可以将这些语句中的每一个放在一个方法中,然后:
第一个方法的返回类型是
Unit
,因为=
操作符不返回任何东西(即,它不是一个表达式),而第二个方法的返回类型是Int
,因为+
操作符返回一个Int
类型的数字(这使它成为一个表达式)。我和上面的@marstran看法一致,第一个版本(赋值)更好,因为你只需要赋值,对我来说更直接。
also()
返回调用它的对象,在本例中实际上根本不需要这个对象(您没有保留also
的结果,而是忽略了它的返回值)。(因此expression-oriented要多得多),编译器建议您使用表达式而不是赋值,因为它给了您更多的灵活性,因为你可以连接表达式上的调用,但不能连接赋值语句,这就是为什么它把赋值语句移到了句末。此外,如果你想到Git,使用一些你可以连接调用的东西,而不必修改它,在代码评审中保存行更改,如果有人必须对
also()
返回的值做一些事情。所以实际上,无论你选择哪一种方法,都取决于你在编码时使用的方法,以及你认为哪一种方法对你的项目更有用。
我不知道在这种情况下的表现,但我不认为这应该太重要。