Как обрабатывать несколько возможных сценариев в Swift

#swift #if-statement #enums #switch-statement

#swift #if-оператор #перечисления #switch-statement

Вопрос:

Итак, я создаю карточную игру с изображением на каждой карте, и я должен использовать swift, чтобы взять данные с карты и превратить их в искусство. Каждая карта имеет 4 атрибута, и каждый атрибут имеет 3 возможности.

Перед тем, как карта будет иметь 4 атрибута (цвет, затенение, форму, числовые формы) в качестве свойств, у меня все готово к работе.

Я попробовал сделать это с помощью циклов if.

 if color = 1{
    if shape = 1{
        if shading = 1{
            if numOfShapes = 1 {
              Rectangle().fill(color1).opacity(0.5)
            }
            if numOfShapes = 2 {
              Rectangle().fill(color1).opacity(0.5)
              Rectangle().fill(color1).opacity(0.5)
            }

        }
        if shading = 2{
        
        }
        if shading = 3{
            
        }
    }
    if shape = 2
    if shape = 3
}


 

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

 var symboler = [
        1: "Rectangle()",
        2: "Circle()",
        3: "RoundedRectangle(cornerRadius: 12)"
        
    ]

 

Но я не смог найти способ превратить строку обратно в исполняемый код.

Каково решение этой проблемы?

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

1. почему цвет и затенение находятся в верхних условиях if? разве это не должно быть swicth в форме и внутри каждого случая цикла for на основе numOfShapes и применять цвет и затенение к каждой фигуре? Таким образом, количество случаев будет равно количеству форм, которые вы поддерживаете

2. Я не знаю решения, которое вы предлагаете, или как это сделать, но я был бы рад попробовать.