if else 구문은 대표적인 조건문으로 if,else 등의 키워드를 사용하여 구현한다.
swift의 if 구문은 **'값이 꼭 Bool 타입'이어야 한다.
else if 는 몇 개가 이어져도 상관없고 else 블록은 없어도 상관 없다.
else if 의 조건을 충족해서 블록 내부의 명령문이 실행되면 그 다음에 이어진 else if 의 조건을 충족하더라도 실행되지 않고 조건문을 빠져나온다.
let someInteger = 100
if someInteger < 100 {
print("100미만")
} else if someInteger > 100 {
print("100초과")
} else {
print("100")
}
let first:Int = 10
let second:Int = 10
if first > second {
print("역시 처음이야")
} else if first < second {
print("두번째가 짱이지")
} else {
print("그거나그거나~")
}
let one:Int = 5
let two:Int = 5
var biggerValue:Int = 0
if one > two {
biggerValue = one
} else if one == two {
biggerValue = one
} else if first < two {
biggerValue = two
} else if one == 5 {
biggerValue = 100 // 위에 조건이 충족되어 있기 때문에 100은 출력 되지 않는다.
}
print(biggerValue)
let sameOne:Int = 5
let sameTwo : Int = 5
var sameValue : Int = 0
if (sameOne > sameTwo) {
sameValue = sameOne
} else if (sameOne == sameTwo) {
sameValue = sameOne
} else if (sameOne < sameTwo) {
sameValue = sameTwo
} else if (sameOne == 5) {
sameValue = 100 // 위와 동일함, 조건을 소괄호로 묶어주는 것은 선택사항
}
let userID:String = "xind"
var inPutID:String = "xind"
if userID == inPutID {
print("Hello," + "\(userID)")
} else {
print("Who are you?")
- switch 구문은 if문과 같이 조건 제어문에 속하지만 switch 구문은 부등식이 사용될 수 없다.
if문이 'Bool 타입에 의해 true일 경우' 블록이 실행된다고 한다면, switch문은 '비교할 변수가 어떤 값을 가지냐'에 따라 실행문을 선택하게 된다. 즉 switch문은 크고 작다를 표현하는 것이 아니라, 동등 조건만 검사할 수 있다.
let someString:String = "리신"
switch someString {
case "리신" :
print("정글")
case "트리스타나" :
print("원딜")
default :
print("트롤")
}
var value = 2
var days: Int = 0
switch (value) {
case 1,3,5,7,8,10,12:
print("31일까지 존재")
case 4,6,9,11:
print("30일까지 존재")
case 2:
print("28 혹은 29일까지 존재")
default:
print("달을 정확히 입력하세요")
}
let num = 25
let count: String
switch num {
case 0...9 :
count = "한자리 수"
case 10...99:
count = "두자리 수"
case 100...999:
count = "세자리 수"
default:
count = "네자리 수 이상"
} // num 이라는 상수에 대하여, num이 0~9까지의 범위 이면 count = 한자리 수.
print("\(count)입니다.")
var value1 = 4
switch (value1) {
case 4:
print("4")
fallthrough
case 3:
print("3")
fallthrough
case 2:
print("2")
fallthrough
case 1:
print("1")
fallthrough
default:
print("none")
} // fallthrough는 break를 걸지 않고 쭉 내려온다. (스위프트에서는 자동으로 break가 걸려있기 때문에)
- 타 프로그래밍 언어에서의 switch 는
case가 끝날 때 마다break를 넣어줘야 하지만 Swift에서는 자동으로break가 걸린다.
조건에 따라 실행되어야 하는 명령어는 조건문을 통해 분기한다면, 같거나 비슷한 명령을 반복 실행할 때는 반복문을 사용. 특히나 배열과 같은 시퀀스, 순서가 있는 데이터는 반복문으로 편하게 처리할 수 있다.
for-in 반복 구문은 반복적인 데이터나 시퀀스를 다룰 때 가장 많이 사용한다.
for 문은 문자열 또는 튜플이 들어갔을 때 안에 있는 요소를 하나씩 반복한다.for
임시 상수in시퀀스 아이템(문자열,튜플){
실행 코드
}
for i in 0...2 {
print(i)
}
for i in 0...5 {
if i.isMultiple(of: 2) {
print(i)
continue // continue 키워드를 사용하면 바로 다음 시퀀스로 건너뛴다.
}
print("\(i) == 홀수")
}
let helloSwift: String = "Hello, Swift!"
for char in helloSwift {
print(char)
}
var result: Int = 1
for _ in 1...3 {
result *= 10 // 시퀀스에 해당하는 값이 필요 없다면 와일드카드 식별자(_)를 사용
}
print("10의 3제곱은 \(result)입니다.")
let freinds: [String:Int] = ["Jay":35, "Joe":25, "Anna":28]
for n in freinds {
print(n)
}
let 픽창:[String:String] =
["탑" : "다리우스", "정글" : "리신", "미드" : "아칼리", "원딜" :"진", "서폿" : "레오나" ]
for (포지션, 챔피언) in 픽창 {
print("\(포지션) : \(챔피언)") // 포지션에는 키, 챔피언에는 값
}
let 지역번호:Set<String> = ["02", "031", "042", "041"]
for 번호 in 지역번호 {
print(번호)
}
특정 조건(Bool 타입)이 성립하는 한 블록 내부의 코드를 반복해서 실행한다.
var names: [String] = ["joker", "jenny", "nove", "max"]
while names.isEmpty == false {
print("Good bye \(names.removeFirst())") // removeFirst() 는 요소를 삭제함과 동시에 삭제한 요소를 반환한다.
var name:[String] = ["john", "chalse", "jessica", "menny"]
repeat {
print("Good bye \(name.removeFirst())")
} while name.isEmpty == false
감사합니다 :)