swift 4.2 Enum case '' не найден в типе '?'Требование в операторе switch, чтобы избыточно развернуть неявно развернутый необязательный - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть следующее перечисление:

enum ExampleEnum {
    case one
    case two
    case three
    case four  
}

И следующее определение свойства:

var exampleProperty: ExampleEnum!

до swift 4.2 Я использовал следующую инструкцию switch:

switch self.exampleProperty {
    case .one:
        print("case one")
    case .two:
        print("case two")
    case .three:
        print("case three")
    case .four:
        print("case four")
    default:
        break
}

С момента перехода на swift 4.2 этот оператор switch дает мне ошибку:

Enum case 'one' not found in type 'ExampleEnum?'

Я нахожу это странным, потому что я четко определил тип с восклицательным знаком, чтобы неявно развернуть необязательное.Однако, похоже, этого не происходит.Чтобы устранить ошибку, мне нужно выполнить переключение следующим образом:

switch self.exampleProperty! {
    case .one:
        print("case one")
    case .two:
        print("case two")
    case .three:
        print("case three")
    case .four:
        print("case four")
}

То, что я сделал выше, снова развернуло переменную exampleProperty, даже если определение неявно развернуто, а также удалило значение по умолчанию изswitch.

Просто интересно, почему это изменение в swift 4.2?Это изменение в операторе switch или почему требуется повторное развертывание.Кажется излишним?

1 Ответ

0 голосов
/ 16 января 2019

для меня это хуже

if let myEnumCase = self.exampleProperty {
      switch myEnumCase {
      case .one:
        print("case one")
      case .two:
        print("case two")
      case .three:
        print("case three")
      case .four:
        print("case four")
  }
}

но я все еще в замешательстве, если мы обернули силу, тогда зачем нам это
любое предложение будет оценено

...