В моей функции много «если», как я могу создать цикл, чтобы исправить это?

#swift

Вопрос:

таким образом, у меня нет модели для нее, поэтому у нее много «если», и как я могу создать цикл, чтобы исправить это?

     @State var player1show = true
    @State var player2show = true
    @State var player3show = true
    @State var player4show = true

func closeall() {
        if !player1show{
            player1show.toggle()
            player1.stop()
        }
        if !player2show{
            player2show.toggle()
            player2.stop()
        }
        if !player3show{
            player3show.toggle()
            player3.stop()
        }
        ...
    }
 

Комментарии:

1. Вы не предоставили достаточно подробностей, чтобы объяснить, почему ваш код структурирован так, как он есть, но я могу догадаться, что это шаблон, который я часто вижу при обучении программированию. Вместо того , чтобы делать такие вещи, как player2show создание массива playershow или что-то в этом роде, чтобы вы могли это делать for i in 0..<numberOfPlayers { if !playershow[i] { ... } } .

2. @deaton.dg Спасибо

Ответ №1:

  1. «плеер» — это экземпляр класса Player, который имеет свойство «показывать» (или метод), а также методы toggle() и stop(). Возможно, у вас есть базовый класс и виртуальные переопределяемые методы для этого. Это не обязательно, но наличие базового класса для всех игроков-хорошая практика, поэтому вы можете указать больше для каждого типа игроков.
  2. «игроки» — это массив или список всех активных игроков в игре. Вы должны вести этот список.
      for player in players
     {
        if !player.show
        {
           player.toggle()
           player.stop()
        }
     } 
     

Надеюсь, это даст вам представление!

Комментарии:

1. Для этого не нужен базовый класс, достаточно протокола.