[Swift 기초] 제어구문 - 조건문(흐름제어)
2022. 3. 7. 15:10ㆍSwift 기초 정리
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
- 흐름제어: 프로그램의 실행될 코드와 그것들의 순서를 결정하는 것
1. if-else
if 조건 {
/*실행 구문*/
}else if 조건 {
/*실행 구문*/
}else {
/*실행 구문*/
}
- if-else 구문의 기본형태, if만 단독적으로 사용해도 되고, else if, else와 조합하여 사용 가능
- 조건 값을 감싸는 소괄호는 선택사항, 중괄호는 필수
- if문: 조건식의 결과가 true이면 해당 코드 블록을 실행하며, false면 실행하지 않는다.
- 조건식은 변수, 상수, 연산자, 함수 등으로 구성될 수 있다.
- if 뒤의 조건 값에는 Bool 타입의 값만 위치해야 함, 빈 문자열이나 배열도 명확한 길이가 0인지 검사
- Unary operator '!' cannot be applied to an operand of type 'Int’
//if 뒤의 조건 값에 bool var number = 0 if !number { //Unary operator '!' cannot be applied to an operand of type 'Int' //... } //문자열이나 배열을 확인할 때 var name = ["A", "B", "C"] if name.isEmpty { //false //... }
- 복합 조건(compound conditional): 하나 이상의 조건식을 검사하여 true 또는 false를 반환하는 조건
- &&는 “and”를, ||는 “or”를 의미한다.
- 다중조건(complex conditional): 여러 조건의 검사를 하나의 코드 블록으로 할 수 있다. if-else-if 블록
2. switch
switch 비교값 {
case 패턴:
/*실행 구문*/
default:
/*실행 구문*/
}
- switch문: 하나의 표현식(변수 등)에 대해 여러 다른 경우(case)로 비교하는 단일 코드 블록
- 한 case 문이 true면 그 case에 포함된 코드가 실행되고 switch문이 끝난다.
- 만일 모든 case 문이 true가 아니면 switch문의 default 코드가 실행된다.
- 명시적 break를 하지 않아도 자동으로 case마다 break된다.
- 매우 한정적인 값(enum, case 등)이 비교값이 아닌 한 default 구문은 반드시 작성
- 각각의 case 내부에는 실행가능한 코드가 반드시 위치해야 한다. → fallthrough
- 'case' label in a 'switch' should have at least one executable statement
- fallthrough를 사용하면 break를 무시할 수 있다.
var ch = "B" switch ch { case "A": //'case' label in a 'switch' should have at least one executable statement fallthrough //fallthrough를 사용하면 다음 case로 넘어간다. case "B": "match" default: "unmatch" }
- 하나의 case 문에서 여러 개의 값을 검사할 수 있다: 쉼표를 사용하여 하나의 case에 여러 패턴 명시
-
var grade = "X" switch grade { case "A", "a": print("good") ... default: print("nothing") }
- 범위 매칭 연산: 1...5와 같은 정수형 범위와 함께, “A”...”Z”와 같은 문자형 범위 매칭 연산도 가능하다.
-
switch ch { case "A"..."Z": "대문자" case "a"..."z": "소문자" default: "알파벳 아님" }
- 튜플 매칭
- 임의의 가능한 값을 지정하는 와일드카드로 _(언더바) 사용 가능
- let 문을 이용해서 조건이 맞을 경우, 튜플 값을 변수에 할당할 수 있음
- let ... where 문을 이용하여 튜플 값이 주어진 조건에 맞을 경우 실행하도록 할 수 있음
var point = (100,2) switch (point){ case (0,0): "원점" case (_,0): //임의의 가능한 값을 지정하는 와일드카드로 _(언더바) 사용 가능 "y축" case (0,_): "x축" case let (x,y) where x == y: //let ... where 문을 이용하여 튜플 값이 주어진 조건에 맞을 경우 실행 print("x와 y는 같은 값을 가집니다.") case (let x, 0...2): //조건을 범위로 지정할 수 있음 print("좌표의 x변수는 \\(x)로 y변수가 0 이상 2 이하의 범위에 있습니다.") case let (x,y): print("in point, x= \\(x), y= \\(y)") //let 문을 이용해서 조건이 맞을 경우, 튜플 값을 변수에 할당할 수 있음 } //좌표의 x변수는 100로 y변수가 0 이상 2 이하의 범위에 있습니다.
- switch문 continue
- swift에서는 fallthrough를 자동으로 지원하지 않기 때문에 다른 case를 수행하지 않고 for문으로 돌아가기 위해 continue 사용
var strInput = "I am hungry" var strOutput = "" for ch in strInput { switch ch { case " ": //continue //Iamhungry //fallthrough //I am hungry default: strOutput.append(ch) } } print(strOutput)
참고하였습니다. 감사합니다.
https://yagom.net/courses/swift-basic/lessons/제어구문/topic/조건문/
https://www.inflearn.com/course/창원대학교-박동규-교수의-swift-기초-강좌/lecture/1890?tab=note&mm=null
https://devxoul.gitbooks.io/ios-with-swift-in-40-hours/content/Chapter-2/control-flow.html
23.06.27 수정) Swift 쉽게, 더 쉽게
728x90
'Swift 기초 정리' 카테고리의 다른 글
[Swift 기초] 함수 (0) | 2022.03.11 |
---|---|
[Swift 기초] 제어구문-반복문 (0) | 2022.03.07 |
[Swift 기초] 컬렉션 타입 (0) | 2022.03.06 |
[Swift 기초] 튜플 Tuple (0) | 2022.03.06 |
[Swift 기초] Any, AnyObject, nil (0) | 2022.02.17 |