私はKotlinの初心者ですが、私はそれが大好きです。 3行のコードを1つにまとめると素晴らしい気分になります。今私はしばしば自分のコードを見て、「ここには冗長性があると思っています。それを行うためのより簡潔な方法が必要です。検索をすると、コトリンはより簡潔な方法を提供することがよくあります。if/else条件の戻り値だけでなく、実行コード
ここでは、シンプルで簡潔なKotlinソリューションがあるはずですが、それを認識していないと感じる問題があります。うまくいけば、あなたは私を啓発することができます!この不自然な例のように
テイクコード:if
条件に基づいて
fun doSomething(): Boolean {
if (randomInt % 2 == 0) {
foo = Foo()
true
} else {
bar = null
false
}
}
、私はいくつかのコードを実行し、条件の値を返すようにしたいです。 「条件が真であれば、true
を返し、偽の場合はfalse
を返してください」と明示的に言わなければならないということが私には気になります。それは冗長なようだ。もちろん、私はreturn randomInt % 2
と言うことができますが、それが真である場合に基づいてコードを実行したいと思います。
私は知らない魔術師Kotlinはありますか?私のためにこの状況を処理する関数を作るべきですが、それを呼び出す構文はif文とは異なるでしょうか?何らかのマッピング関数がありますか、もしあれば、何らかの方法でオーバーロードできますか?簡潔で賢い答えがあるはずだが、それは私には来ない。
私がJavaで知っている1行のみの解決策でこれをしたいのであれば、もしif、elseとwhileがサポートしていないなら、if条件ではなく、Kotlinの代入で代入されます。 – Avi
ちょうど@ pixel-elephantの解決策に固執するすべてが良い古い方法を使用しないようにするには、新しい方法で解決しなければならない場合はごめんなさい – guenhter
私は申し訳ありませんが、私は質問を投票したが、 "魔法のオペレーター"この特殊なケースは、 'randomInt%2 == 0'を変数に抽出することで解くことができます。これは、Java、Cおよび他の「古くて退屈な」言語と同じです。 Kotlinは魔法ではなく、Kotlinのコードは私たちが書いたほど良いものです。 – voddan