Пользовательский элемент enum - PullRequest
0 голосов
/ 22 мая 2019

Как я знаю в Swift, мы можем создать пользовательский элемент в enum, как этот

enum MyEnum {
  case item1
  case item2
  case custom(param1: String)

  var param1: String {
    switch self {
    case .item1:
      return "Item 1"
    case .item2:
      return "Item 2"
    case let .custom(param1):
      return param1
    }
  }
}

Возможно ли это в Kotlin?Если да, то как?

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Это невозможно с Enum s в Котлине, но вы можете сделать что-то подобное с Запечатанными классами:

sealed class MySealedClass(val param1: String) {
    object Type1 : MySealedClass("Type 1")
    object Type2 : MySealedClass("Type 2")
    class Custom(param1: String) : MySealedClass(param1)
}

См. это для справки.

0 голосов
/ 23 мая 2019

Да, вы можете.Вам просто нужно присвоить enum class свойство, которое затем инициализируется для каждого элемента перечисления.

enum class Test(val param: String) {
    Item1("Item 1"),
    Item2("Item 2"),
    Custom("Hello")
}

println(Test.Custom.param) // Hello
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...