使用选项链接和/或elvis运算符编写以下代码是否有更简洁的方法?
email.addSubject(if (creator != null) String.format( inviteDescription, creator) else String.format(inviteDescriptionNoCreator, group))
感觉应该有。
答案 0 :(得分:1)
使用正常的 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)
如果目标是尽可能写出最短的代码,那么你可以使用单行Elvis运算符。但如果目标是可读代码,我会选择简单的 if 表达式或多行Elvis运算符。我甚至会向前迈出一步,将其转移到另一种方法。但无论你选择什么,请不要在一条长线上写下所有内容,而是将它放在不同的行中。
答案 1 :(得分:0)
利用?.
和?:
可以获得以下信息:
email.addSubject(creator?.let { String.format(inviteDescription, it) } ?: String.format(inviteDescriptionNoCreator, group))
不幸的是,这仍然很长,可以说更容易阅读。您可以使用String.format
扩展功能:
email.addSubject(creator?.let { inviteDescription.format(it) } ?: inviteDescriptionNoCreator.format(group))