Kotlin 的 data class 會對你的程式產生什麼樣的化學反應
(ingramchen.io)
sealed class Event
data class BroadCastEvent(
val payload: Payload
): Event()
data class OneToOneEvent(
val destination: Destination,
val payload: Payload,
val secret:Boolean = false
): Event()
然後在 messenger.send 這個 function 做 pattern matching
這樣就只有在 OneToOne 的時候才能使用 secret 選項,不會寫錯
koji
積分 1
like below ?
sealed class Option(val soundFile: String? = null,
val showNotification: Boolean = false) {
data class OneToOneOption(val secret: Boolean = false) : Option()
}
IngramChen
積分 1
這個設計還是會發生像下面的呼叫:
messenger.send(Topic("foo"), Text("secret"), OneToOneOption(secret=true))
然後 runtime 時就爆了