Переключите два перечисления одним переключателем - PullRequest
0 голосов
/ 02 марта 2020

Предположим, у меня есть 2 enum, один список животных, а другой возможные размеры.

Допустим, я хочу получить звук с помощью функции, основанной на животном и его размере.

Можно ли каким-то образом одновременно сделать переключение из двух перечислений?

enum Animal {
  case dog
  case cat
  case bird
}

enum Size {
  case small
  case big
}

func soundForAnimal(_ animal: Animal, size: Size) {

    switch animal, size {
        case .dog, .small:
          print ("wuuf")

        case .dog, .big:
          print("wooof")

        case .cat, .small:
          print("Miau")

        case .cat, .big:
          print("MIAAAAUU")

        case .bird, .small:
          print ("piu")

        case .bird, .big:
          print("pioo")
    }
}

Приведенный выше код является примером того, чего я хотел бы достичь, но я не могу понять, как .

1 Ответ

2 голосов
/ 02 марта 2020

Ты очень близко. Сделайте так, чтобы переключатель создал кортеж:

enum Animal {
  case dog
  case cat
  case bird
}

enum Size {
  case small
  case big
}

func soundForAnimal(_ animal: Animal, size: Size) {

    switch (animal, size) {
        case (.dog, .small):
          print ("wuuf")

        case (.dog, .big):
          print("wooof")

        case (.cat, .small):
          print("Miau")

        //and so on...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...