-
Swift #5 - 제어문Swift의 온도 2021. 1. 7. 05:23
1. 반복문
- Swift의 반복문
#for 반복문
#while, repeat-while
- C Style For Loop
#Swift 3에서 삭제
#C Style Loop 대신 for-in과 범위 사용
- 범위를 이용한 반복, 배열 순회
*범위 연산자(C 스타일의 for 대체)for i in 0..<10{print("For 반복문 \(i)")}*Array, Set과 사용하기for item in [1,2,3,4,5] {print(item)}cs - 딕셔너리와 문자열 순회
*딕셔너리 - 튜플for (kor,eng) in dic1 {print("Key : \(kor) Value : \(eng)")}*문자열의 뷰(콜렉션)for ch in str. characters{print(ch)}cs - while 반복
#while 반복문
*whilevar i = 1while i < 10 {i += 1}*repeat-whilevar j = 1repeat{j += 1if j > 10 {break}} while truecs 2. 조건문
- if 조건문
*조건부의 괄호 생략 가능*바디의 중괄호{} 생략 불가 // 1줄도 불가if 3 > 2 {print("3이 2보다 크다!")}*조건절:결과가 Bool*nil 비교시 ! =nil, ==nil 을 붙여야 함if obj {} // 에러if obj != {}cs - if와 else
var bloodType = "C"if bloodType == "A" { //bloodType에 "A" 기입시print("혈액형은 A")}else if bloodType == "B" || bloodType == "O" { // bloodType에 "B", "O" 기입시print("B나 O형")}else{print("그러면 AB형?") // bloodType에 "A", "B", "O" 를 제외한 값을 기입시}cs - if-let 바인딩
#바인딩
*유효한 값 판단(nil 여부)if let val = someFunc(){print("\(val)")}*다중 바인딩if let val1 = someFunc()let val2 = anotherFunc(){print("val1, val2는 모두 유효한 값")}cs - 버전 검사
*버전 체크:#available(FLATFORM VERSION)if #available(iOS 10,macOS 10.12, *) {// iOS 10이상, macOS 10.12 이상} else {// iOS 10, macOS 10.12 이전 버전용 코드}cs - Early Exit
#함수와 반복문에서 Exit
*함수, 반복문 마치기(Exit)
*정상 종료 Exit : 함수 실행 완료, 반복 조건 채우기
*종료 외의 Exit : 정상 흐름과 다른 상황에서 마치기
*함수나 반복문은 다수의 Exit 작성 가능
*Early Exit : 실행 전 조건을 먼저 검사, 조건에 맞지 않으면 Exit
- guard
#if 조건문과 유사한 사용
#Early Exit 용으로 사용
*guard 문법guard [조건] else {// exit 명령}cs *바디에는 exit 명령 필수
*조건 작성 방식이 다르다
*if 문의 조건 : 진행 불가능한 상황의 조건 작성
*guard 문의 조건 : 진행 가능한 상황의 조건 작성
*바인딩 스코프
func example(){guard let val = someFunc() else{}print("val은 유효한 값 : \(val)")}cs - guard vs if
#Early Exit 구현 예
*if, guard 차이점 비교*배열의 원소가 양수면 순회, 음수가 나오면 Exit*iffor item in Array {if item < 0 {break}print(item)*guardfor item in Array {guard item > 0 else {break}print(item)}cs - Switch
#Swich 조건문
*조건의 맞는 case 하나만 실행
*break 불필요
*fallthrough : 다음 case 실행
#case 작성
*모든 상황에 대한 case 작성
*모든 상황에 대한 case 작성 불가능 : default 필수
#Switch : 사용 예
*기본 사용switch someValue {case 1:print("1")case 2:print("2")default:print("Other")}cs #범위 연산자
switch someValue {case 1, 2, 3:print("1, 2 혹은 3")fallthroughcase 4..<6:print("4에서 5사이")case 6:print("Six")default:print("나머지.")}cs #튜플, 언더스코어(_)
var tupleVal = (1, "One")switch tupleVal {case(0, "Zero"):case(0, "영")print("0,영")case(1,_):print("1,일")default:print("Other")}cs #밸류 바인딩
var point = (2, 2)switch point {case (1, let y):print("1, \(y)")case (let x, 2):print("\(x), 2")case let(x, y):print("\(x), 2")default:print("\(x), \(y)")}cs #바인딩과 조건 : where
switch point {case let(x,y) where x > 0:print("x가 0보다 크다")case let("x, y") where x < 0 && y > 0print("2사 분변")default:print("그 외")}cs 'Swift의 온도' 카테고리의 다른 글
Swift #7 - 함수 (0) 2021.01.12 Swift #6 - nil과 옵셔널 (0) 2021.01.08 Swift #4 - 다수의 데이터 다루기 (0) 2021.01.06 Swift #3 - 문자와 문자열 (0) 2021.01.05 Swift #2 - 데이터 타입과 연산자 (0) 2021.01.01