默认情况下是否可以使when
String
比较大小写不敏感?
when (subtype.toLowerCase()) {
MessagingClient.RTC_SUBTYPE.sdp.toString().toLowerCase() -> onSDPMessageReceived(topic, sender, data!!)
MessagingClient.RTC_SUBTYPE.bye.toString().toLowerCase() -> onRTCBYEMessageReceived(topic, sender)
MessagingClient.RTC_SUBTYPE.negotiationOffer.toString().toLowerCase() -> onNegotiationOfferMessageReceived(sender, data!!)
}
这有太多的重复代码!另请注意,MessagingClient.RTC_SUBTYPE
是enum class
,第一行的subtype
是从某个客户端收到的,因此我们必须相应地对待它。
答案 0 :(得分:6)
我会将subtype
转换为MessagingClient.RTC_SUBTYPE
,如下所示:
val subtypeEnum = MessagingClient.RTC_SUBTYPE.values().firstOrNull {
it.name.equals(subtype, ignoreCase = true)
} ?: throw IllegalArgumentException("${subtype} no value of MessagingClient.RTC_SUBTYPE match")
然后在when
when (subtypeEnm) {
MessagingClient.RTC_SUBTYPE.sdp -> onSDPMessageReceived(topic, sender, data!!)
MessagingClient.RTC_SUBTYPE.bye -> onRTCBYEMessageReceived(topic, sender)
MessagingClient.RTC_SUBTYPE.negotiationOffer -> onNegotiationOfferMessageReceived(sender, data!!)
}
答案 1 :(得分:-1)
var s1 =editText.text.toString()
var s2=textView_.text
var s3 =s1.equals(s2 ,true)