Swift는 다양한 제어 흐름 (control flow) 구문을 제공함.
For-in Loops
- 범위가 정해져 있거나 반복하고자 하는 element가 명확할때 사용 (범위연산자, 배열, 등)
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
print("Hello, \(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!
- 딕셔너리의 key : value 값을 활용해 사용 가능
- 딕셔너리의 순서는 정해져 있지 않음으로 랜덤값으로 출력됨
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}
// cats have 4 legs
// ants have 6 legs
// spiders have 8 legs
- 범위연산자에 활용 가능
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
- 범위 연산자를 활용해 결과값만 출력 가능
var base = 2
var power = 6
var answer = 1
for _ in 1...power {
answer *= base
}
print("\(base)의 \(power)제곱은 \(answer)") //2의 6제곱은 64
- 참 거짓을 판별하기 위해 활용 가능
let bugs = ["Aphid", "Bumblebee", "Cicada", "Damselfly", "Earwig"]
var hasMosquito = false
for bug in bugs {
if bug == "Mosquito" {
hasMosquito = true
break
}
}
print("'bugs' has a mosquito: \(hasMosquito)")
// Prints "'bugs' has a mosquito: false"
While 루프 (While Loops)
- while 루프는 조건이 참이라면 계속 실행됨
※무한루프 조심 - 명확한 범위가 없는 반복문에 사용
var number = 1
while number <= 100 {
if number % 2 == 0 { // 2로 나누어 떨어지는 경우
print("\(number)는 2로 나누어 떨어집니다.")
}
number += 1 //무한루프를 피하기 위해 넣음
}
//2는 2로 나누어 떨어집니다.
//4는 2로 나누어 떨어집니다.
//6는 2로 나누어 떨어집니다.
//8는 2로 나누어 떨어집니다.
//10는 2로 나누어 떨어집니다.
//12는 2로 나누어 떨어집니다.
...
조건 구문 (Conditional Statements)
- swift는 코드에 조건부를 추가하는 방법은 if문과 switch문 2가지를 제공
- 일반적으로 if 구문은 가낭한 결과가 적은 간단한 조건에 적합함.
- switch 구문은 가능한 결과가 여러개이며 더 복잡한 조건에 적합하고 실해해야 할 적절한 코드 분기를 선택해야 하는 패턴 매칭 상태에 유용함
if구문
- 조건이 true 일 경우에만 구문을 실행
var temperatureInFahrenheit = 30
if temperatureInFahrenheit <= 32 {
print("It's very cold. Consider wearing a scarf.")
}
// Prints "It's very cold. Consider wearing a scarf."
- if 구문은 if 조건이 false 일 때 그밖의 다른 구문을 제공할 수 있습니다. 이 구문은 else 키워드로 표기
temperatureInFahrenheit = 40
if temperatureInFahrenheit <= 32 {
print("It's very cold. Consider wearing a scarf.")
} else {
print("It's not that cold. Wear a T-shirt.")
}
// Prints "It's not that cold. Wear a T-shirt."
- 중괄호는 항상 출력이 되야하고, else if 를 통해 추가할 수 있음
temperatureInFahrenheit = 90
if temperatureInFahrenheit <= 32 {
print("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= 86 {
print("It's really warm. Don't forget to wear sunscreen.")
} else {
print("It's not that cold. Wear a T-shirt.")
}
// Prints "It's really warm. Don't forget to wear sunscreen."
- 마지막 else 절은 옵셔널임으로 제외 가능 따라서, if절과 else if 절을 모두 만족하지 않으면 아무것도 출력되지 않음
temperatureInFahrenheit = 72
if temperatureInFahrenheit <= 32 {
print("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= 86 {
print("It's really warm. Don't forget to wear sunscreen.")
}
- 값에 따른 문자열 할당 가능
let temperatureInCelsius = -1
let weatherAdvice: String
if temperatureInCelsius > 30 {
weatherAdvice = "푹염입니다. 더위에 대비하세요"
} else if temperatureInCelsius < 15 {
weatherAdvice = "춥습니다."
} else {
weatherAdvice = "나들이하기 좋은 날씨입니다."
}
print(weatherAdvice)
//춥습니다.
- 간결한 표현 가능(if 절에 따른 문구 할당)
let weatherAdvice1 = if temperatureInCelsius > 30 {
"푹염입니다. 더위에 대비하세요"
} else if temperatureInCelsius < 15 {
"춥습니다."
} else {
"나들이하기 좋은 날씨입니다."
}
print(weatherAdvice1)
switch 구문
- switch 구문은 여러가지 선택 가능한 경우의 수에 따라 각기 다른 코드를 실행함.
var age = 37
switch age {
case 8...13:
print("초등학생")
case 14...16:
print("중학생")
case 17...19:
print("고등학생")
default:
print("성인")
}
//성인
- break 키워드를 통해 코드를 중단시키고 다음 코드로 이동
var age = 20
switch age {
case 8...13:
print("초등학생")
case 14...16:
print("중학생")
case 17...19:
print("고등학생")
default:
break
}
if age > 19 {
print("성인입니다.")
} else if age > 8 && age < 19 {
print("학생입니다.")
}
//성인입니다.
- Where 키워드를 통해 코드를 중단시키고 다음 코드로 이동
switch 케이스는 추가 조건으로 where 절을 통해 참 거짓을 판별 할 수 있고 그에 따른 코드를 출력함
let yetAnotherPoint = (1, -1)
switch yetAnotherPoint {
case let (x, y) where x == y:
print("(\(x), \(y)) is on the line x == y")
case let (x, y) where x == -y:
print("(\(x), \(y)) is on the line x == -y")
case let (x, y):
print("(\(x), \(y)) is just some arbitrary point")
}
// Prints "(1, -1) is on the line x == -y"
튜플 (Tuples)
튜플은 여러가지 데이터를 한번에 저장할 수 있는 가장 간단한 방법
활용방법은 좌표,인적사항 등등에서 활용 가능
- 튜플의 기본 형태
var students = ("Hoi","iOS","sessac")
- 각 요소에 이름을 붙일 수 있고, 각각 접근 가능
var students = (name: "Hoi", sbjact: "iOS",class: "sessac")
students.name //"Hoi"
students.sbjact //"sbjact"
students.class //"sessac"
- 각 요소를 바인딩 가능(바인딩이란 상수화 || 변수화를 말함)
let (name,sbjact,location) = ("Hoi", "iOS","sessac")
- switch구절과 활용 가능
let anotherPoint = (2, 0)
switch anotherPoint {
case (let x, 0):
print("x축 상의 x값이 \(x)")
case (0, let y):
print("y축 상의 y값이 \(y)")
case let (x, y):
print("x,y의 값은 (\(x), \(y))")
}
// x축 상의 x값이 2
'🍎swift' 카테고리의 다른 글
TLI - Concurrency (0) | 2024.01.17 |
---|---|
[Swift] Stroyboard Navigation Controller를 활용한 화면이동 (1) | 2023.12.21 |
text field 바꾸기 (플레이스 홀더, 클리어 버튼) (0) | 2023.04.21 |
[Swift] 연산자 커스텀 타입 (0) | 2023.04.05 |
Swift - 문자열 다루기 01 (0) | 2023.03.29 |