Есть ли способ уменьшить количество строк кода Swift? - PullRequest
0 голосов
/ 19 января 2019

Я только начал изучать Swift и создал приложение типа рулетки на игровых площадках.

Я использовал switch и case поток управления для различных сценариев и условий. Мне потребовалось 156 рядов , чтобы реализовать все 36 возможностей рулетки и, конечно, красный и черный цвета.

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

let number = Int.random(in: 0 ..< 37)
let color = Int.random(in: 1 ..< 3)

let NumberColor = (number, color)
let Red = "and the color is Red"
let Black = "and the color is Black"

switch NumberColor {
case (0, _):
print("The number is 0 and the color is Green!")
case  (1, 1):
print("The Number is 1 \(Red)")
case  (1, 2):
print("The Number is 1 \(Black)")
case  (2, 1):
print("The Number is 2 \(Red)")
case  (2, 2):
print("The Number is 2 \(Black)")
case  (3, 1):
print("The Number is 3 \(Red)")
case  (3, 2):
print("The Number is 3 \(Black)")
case  (4, 1):
print("The Number is 4 \(Red)")
case  (4, 2):
print("The Number is 4 \(Black)")
case  (5, 1):
print("The Number is 5 \(Red)")
case  (5, 2):
print("The Number is 5 \(Black)")
case  (6, 1):
print("The Number is 6 \(Red)")
case  (6, 2):
print("The Number is 6 \(Black)")
case  (7, 1):
print("The Number is 7 \(Red)")
case  (7, 2):
print("The Number is 7 \(Black)")
case  (8, 1):
print("The Number is 8 \(Red)")
case  (8, 2):
print("The Number is 8 \(Black)")
case  (9, 1):
print("The Number is 9 \(Red)")
case  (9, 2):
print("The Number is 9 \(Black)")
case  (10, 1):
print("The Number is 10 \(Red)")
case  (10, 2):

И так до тех пор, пока код не достигнет case (36, 1) и case (36, 2) соответственно

Результат в порядке! Мне нужно знать, если есть более короткий способ сделать код, сокращая строки с помощью цикла или чего-то, о чем я не знаю.

Ответы [ 2 ]

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

Вы можете уменьшить свой код до чего-то вроде:

let number = Int.random(in: 0 ... 36)
let color = Int.random(in: 1 ... 2)

switch (number, color) {
case (0, _):
    print("The number is 0 and the color is Green!")

case (_, 1):
    print("The number is \(number) and is Red")

case (_, 2):
    print("The number is \(number) and is Black")

default:
    break
}

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

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

Весь ваш код может быть простым:

let number = Int.random(in: 0 ..< 37)
let color = Int.random(in: 1 ..< 3)

print("The Number is \(number) and the color is \(color == 1 ? "Red" : "Black")")

Вот и все. Нет необходимости в кортеже или switch.

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