Sealed class — po co są typealiasy?

0

Czytam sobie dokumentację Arrow i zastanawia mnie jeden z przykładów.

sealed class CookingException {
  object NastyLettuce: CookingException()
  object KnifeIsDull: CookingException()
  data class InsufficientAmountOfLettuce(val quantityInGrams : Int): CookingException()
}
typealias NastyLettuce = CookingException.NastyLettuce
typealias KnifeIsDull = CookingException.KnifeIsDull
typealias InsufficientAmountOfLettuce = CookingException.InsufficientAmountOfLettuce

Po co są te typealiasy? Dlaczego nie po prostu:

sealed class CookingException
object NastyLettuce: CookingException()
object KnifeIsDull: CookingException()
data class InsufficientAmountOfLettuce(val quantityInGrams : Int): CookingException()
0

Moze chodzic o dostep jak z enuma. Tj. wpisujesz CookingException.*ctrl+spacja* i widzisz dostepne podtypy. Ale tak tylko strzelam.

0

@stivens: Spoko, ale wtedy mogłoby być po prostu:

sealed class CookingException {
  object NastyLettuce: CookingException()
  object KnifeIsDull: CookingException()
  data class InsufficientAmountOfLettuce(val quantityInGrams : Int): CookingException()
}

I potem importy odpowiednie, żeby ładnie było NastyLettuce, a nie CookingException.NastyLettuce.

Myślałem, że to jakiś pattern Kotlinowy i daje jakąś korzyść o której nie wiem

1 użytkowników online, w tym zalogowanych: 0, gości: 1