我有一个Android EditText,我正在设置文本属性。
通常我会使用:
editText.text = "Mars"
但是setter返回一个Editable,所以Kotlin似乎试图用失败的String替换返回的Editable。
所以“解决方法”是:
editText.setText("Mars")
当使用这种类型的setter时,是否有更漂亮的方式(而不是setText()
)设置文本?
答案 0 :(得分:15)
在Kotlin中,作业不是表达。赋值表达式几乎没有实际用例,并且往往会使代码可读性变差,更不用说if (a = b)
错误,因此它们被排除在语言之外。您可以在this discussion中找到Kotlin团队的更多评论。
实际上不可能使用property = value
语法从Java setter返回值,并且您描述的解决方法是获取该值的有效方法。
this
值的常见Java习语:
MyClass c = new MyClass()
.setFoo(x)
.setBar(y)
.setBaz(z);
Kotlin(使用apply
):
val c = MyClass().apply {
foo = x
bar = y
baz = z
}
另见: