嗨,我正在用Kotlin制作一个应用程序,我发现我可以同时使用
textView.setText(str)
Run Code Online (Sandbox Code Playgroud)
和
textView.text = $str
Run Code Online (Sandbox Code Playgroud)
我想知道我应该使用什么以及它们之间的区别。谢谢你。
它们在大多数情况下是相同的,基本上 Kotlin 会根据类属性的 getter 生成一个合成属性,您可以使用它来赋值或从中获取值。
//So, for most cases
textView.setText("some value");
//Is the same as
textView.text = "some value"
//The second is simply shorter and is the 'kotlin way' of assigning values
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这工作得很好。但是,正如前面提到的,合成属性是由 getter 生成的,如果还有 setter,就会出现问题。原因是 getter 和 setter可能有不同的类型。例如,EditText
有getter,现在,kotlin 创建了类型的Editable
合成属性。text
Editable
editText.setText("some value"); //Works
editText.text = "some value" //Won't work, will show an error stating that expected type is Editable
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1757 次 |
最近记录: |