if 조건문
if 3 > 2 {
print("3은 2보다 크다!")
}
/*실행결과
3은 2보다 크다!
*/
nil 비교시 != == nil을 붙어야 함
- if - else
var bloodType = "AB"
if bloodType == "B" {
print("혈액형은 B")
}
eles if bloodType == "A" || bloodType == "O" {
print("A 나 O형")
}
else {
print("그러면 AB형?")
}
/*실행결과
그러면 AB형?
*/
- if - let 바인딩
- 바인딩 : 유요한 값 판단( nil 여부)
//vall 이 nil이 아니면 본문내용 실행
//return 타입은 optional!
if let val = someFunc(){
print("\(val)")
}
#다중 바인딩
if let va11 = someFunc(),
let val2 = anotherFunc(){
print("val1,val2는 모두 유요한 값")
}
- if vs guard
- 바디에는 exit 명령 필수
- 조건 작성 방식이 다르다.
- if 문의 조건 : 진행 불가능한 상황의 조건 작성
- guard 문의 조건 : 진행 가능한 상황의 조건 작성
- 바인딩 스코프
var array = [3,2,1,0,-1,-2,-3]
// if문
for item in array{
if item < 0 { //0보다 작으면 종료
break
}
print(item)
}
// 3 2 1 0
//guard문
for item in array{
guard item > 0 else { //0보다 클때까지 그렇지 않으면 종료
break
}
print(item)
}
//3 2 1
Switch 조건문
- Switch
- 조건에 맞는 case 하나만 실행
- break 불필요
_ fallthrough : 다음 case 실행 - case 작성
- 모든 상황에 대한 case 작성
- 모든 상황에 대한 case 작성 불가능 : default 필수
var someValue = 1
switch someValue {
case 1:
print("한국인")
case 2:
print("일본인")
default:
print("외국인")
}
// 한국인
- 범위 연산자
var someValue = 5
switch someValue {
case 1,2,3:
print("1 or 2 or 3")
fallthrough // 다음 case 실행
case 4..<6:
print("4 or 5")
default:
print("Ohters")
}
// 4 or 5
- 튜플, 언더스코어(_)
var tupleVal = (0,"영")
switch tupleVal {
case (0, "zero"):
print("0,zero")
case(0,"영"):
print("0,영")
case (1,_): //kor Or eng
print("1,일")
default:
print("Other")
}
//0,영
- 밸류 바인딩
var point = (3,2) //Tuple 자료형
switch point {
case(1,let y):
print("1,\(y)")
case let(x,2): //let 변수명 -> 바인딩
print("\(x),2")
default:
print("other")
}
// 3,2
- 바인딩과 조건 : where
var point = (-2,3) //Tuple 자료형
switch point {
case let(x,_) where x>0:
print("x가 0보다 크다")
case let(x,y) where x < 0 && y < 0:
print("x는 0보다 작고 y도 0보다 작다")
case let(x,y) where x < 0 && y > 0:
print("x는 0보다 작지만 y는 0보다 크다")
default:
print("Other")
}
//x는 0보다 작지만 y는 0보다 크다