2016-12-22 4 views
5

私は、テキストプロパティを設定しているアンドロイドEditTextを持っています。セッターに戻り値がある場合、obj.value = ""のようにセッターを使用するには?

editText.text = "Mars" 

をしかし、Kotlinが失敗した文字列で返された編集可能に置き換えるしようとしているようですので、セッターは編集可能を返します。

通常、私が使用したいです。

ので「回避策」は次のとおりです。

editText.setText("Mars") 

はセッターのこのタイプを使用するときにテキストを設定する(代わりにsetText()の)任意のきれいな方法はありますか?

答えて

12

Kotlinでは、割り当ては式ではありません。代入式は実際の使用例はほとんどなく、if (a = b)のバグはもちろんのこと、コードの可読性を悪化させる傾向があるため、それらは言語から除外されています。あなたはthis discussionのKotlinチームからより多くのコメントを見つけることができます。

property = value構文を使用してJavaセッターから返された値を取得することは実際不可能であり、説明した回避策がその値を取得する有効な方法です。


Kotlinプロパティセッター、今度は、値を返すことができません、そして、例えば、コール連鎖ためthis値を返す一般的なJavaイディオムはKotlin functions with receiverで表される:

MyClass c = new MyClass() 
     .setFoo(x) 
     .setBar(y) 
     .setBaz(z); 

Kotlin (applyを使用して):

val c = MyClass().apply { 
    foo = x 
    bar = y 
    baz = z 
} 

参照してください。また:

+1

答えてくれてありがとうとKotlinの代入式対のJavaに関する情報。 –

関連する問題