When creating data classes extending a sealed clas...
# announcements
p
When creating data classes extending a sealed class, Is there any way to avoid duplicating the base sealed class properties in every data class? I have a sealed class defining several common properties and several data classes extending it and it's looking rather cumbersome...
s
@phldavies Do you mean something like this?
Copy code
sealed class SomeSealed(val s: String = "a") {
    data class A(val a: String): SomeSealed()
    data class B(val b: String): SomeSealed()
}
p
yes, pretty much
s
👍
p
although that wouldn't work as have no way of populating
s
as it'll always be the default value of
"a"
This results in requiring the following:
Copy code
sealed class SomeSealed {
    abstract val s: String

    data class A(
        override val s: String,
        val a: String
    ) : SomeSealed()

    data class B(
        override val s: String,
        val b: String
    ) : SomeSealed()
}
s
Yes, if you use data classes.
Copy code
sealed class SomeSealed(open val s: String = "a") {
    class A(val a: String, s: String): SomeSealed(s)
    data class B(val b: String, override val s: String): SomeSealed()
}
p
if I don't use data classes I lose out on the benefits of them (copy/componentN/equality etc)
I was just wondering if I was missing out on some nice syntactic sugar - seems not though 🙂