当setter有返回值时,如何使用像obj.value =""这样的setter?

E. *_*din 6 kotlin

我有一个android EditText,我正在设置文本属性.

通常我会用:

editText.text = "Mars"
Run Code Online (Sandbox Code Playgroud)

但是setter返回一个Editable,所以看起来Kotlin试图用失败的String替换返回的Editable.

所以"解决方法"是:

editText.setText("Mars")
Run Code Online (Sandbox Code Playgroud)

setText()当使用这种类型的setter时,有没有更漂亮的方法(而不是)设置文本?

hot*_*key 15

在科特林,作业不是表达.赋值表达式几乎没有真正的用例,并且往往会使代码可读性变差,更不用说if (a = b)bug了,所以它们被排除在语言之外.您可以在本次讨论中找到Kotlin团队的更多评论.

实际上不可能使用property = value语法从Java setter返回值,并且您描述的变通方法是获取该值的有效方法.


反过来,Kotlin属性setter不能返回一个值,例如,一个this用于调用链接返回值的常见Java习惯用Kotlin 函数表示接收器:

MyClass c = new MyClass()
        .setFoo(x)
        .setBar(y)
        .setBaz(z);
Run Code Online (Sandbox Code Playgroud)

Kotlin(使用apply):

val c = MyClass().apply {
    foo = x
    bar = y
    baz = z
}
Run Code Online (Sandbox Code Playgroud)

也可以看看: