2017-12-14 4 views
1

オプション連鎖および/またはelvis演算子を使用して次のコードを記述するのには、より冗長な方法がありますか?オプション連鎖(if/elseの代わりに)

email.addSubject(if (creator != null) String.format(inviteDescription, creator) else String.format(inviteDescriptionNoCreator, group)) 

これはあるはずです。ただ、?.?:を生かし

答えて

1

:あなたはString.format拡張機能を使用することにより、より多くのビットをオフに剃ることができ可能な限り最短のコードを書いてください.1行のElvis演算子を使うことができます。しかし、目的が読みやすいコードであれば、式の場合は単純、複数行のElvis演算子を選択します。私は一歩先を進んで別の方法に移りました。しかし、何を選んでも、すべてを1つの長い行に書くのではなく、別々の行に入れてください。

0

は私たちに次のようになります:

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)) 
関連する問題