オプション連鎖および/またはelvis演算子を使用して次のコードを記述するのには、より冗長な方法がありますか?オプション連鎖(if/elseの代わりに)
email.addSubject(if (creator != null) String.format(inviteDescription, creator) else String.format(inviteDescriptionNoCreator, group))
これはあるはずです。ただ、?.
と?:
を生かし
オプション連鎖および/またはelvis演算子を使用して次のコードを記述するのには、より冗長な方法がありますか?オプション連鎖(if/elseの代わりに)
email.addSubject(if (creator != null) String.format(inviteDescription, creator) else String.format(inviteDescriptionNoCreator, group))
これはあるはずです。ただ、?.
と?:
を生かし
:あなたはString.format
拡張機能を使用することにより、より多くのビットをオフに剃ることができ可能な限り最短のコードを書いてください.1行のElvis演算子を使うことができます。しかし、目的が読みやすいコードであれば、式の場合は単純、複数行のElvis演算子を選択します。私は一歩先を進んで別の方法に移りました。しかし、何を選んでも、すべてを1つの長い行に書くのではなく、別々の行に入れてください。
は私たちに次のようになります:
email.addSubject(creator?.let { String.format(inviteDescription, it) } ?: String.format(inviteDescriptionNoCreator, group))
残念ながら、それはまだかなり長いですし、間違いなく、より読みやすいではありません。目標がする場合は、通常の IF表現
val subject = if (creator != null) {
inviteDescription.format(creator)
} else {
inviteDescriptionNoCreator.format(group)
}
email.addSubject(subject)
を使用したエルビス演算子
val subject = creator?.let {
inviteDescription.format(it)
} ?: inviteDescriptionNoCreator.format(group)
email.addSubject(subject)
を
email.addSubject(creator?.let { inviteDescription.format(it) } ?: inviteDescriptionNoCreator.format(group))