当setter有返回值时,如何使用setter如obj.value =“”?
我有一个android EditText,我正在设置文本属性。
通常我会使用:
editText.text = "Mars"
但是setter返回一个Editable,所以看起来Kotlin试图用一个失败的String替换返回的Editable。
所以“解决方法”是:
editText.setText("Mars")
当使用这种类型的setter时,有没有更好的方法(而不是setText()
)来设置文本?
在Kotlin中,作业不是表达式。 赋值表达式几乎没有真正的用例,并且往往会恶化代码的可读性,更不要说if (a = b)
bug了,所以他们被排除在语言之外。 你可以在这个讨论中找到Kotlin团队的更多评论。
实际上,使用property = value
语法从Java设置器返回值是不可能的,所描述的解决方法是获取该值的有效方法。
Kotlin属性设置器反过来也不能返回一个值,例如,用Kotlin 函数和接收器来表示返回给调用链的this
值的普通Java成语:
MyClass c = new MyClass() .setFoo(x) .setBar(y) .setBaz(z);
Kotlin(使用apply
):
val c = MyClass().apply { foo = x bar = y baz = z }
也可以看看:
- 如何将Java分配表达式转换为Kotlin