본문 바로가기
Swift

Swift 흐름제어 구문

by JDeoks 2023. 5. 1.

1. 반복문

순회대상에 대해서 동일한 코드를 반복실행.

 

for ~ in :

for 루프상수 in 순회대상 {
	// 실행구문
}

// String Type 순회
var lang = "swift"
for c in lang.chracters {
	print("개별 문자: \(c)")
}

순회 대상으로 이용가능한 데이터:  Array, Dictionary, Set, 범위 데이터, String

String은 순회처리를 지원하지 않음. 순회하기 위해서는 .chracters 속성 사용.

루프 상수는 반복마다 개별 아이템을 넘겨받아 재선언됨.

루프 '상수'이기 때문에 값 대입 불가능

루프 상수는 for 블록 밖에서 사용 불가능

루프 상수를 언더바(_) 대신 사용 가능

 

while:

while 조건식 {
        // 실행구문
}

 

repeat ~ while:

repeat{
	// 실행구문
}
while 조건식

do while 과 같은 방식



 

2. 조건문

조건에 따라 코드 실행 분기가 나뉘는 구문

 

if:

if 조건식{
        // 실행 구문
}
else if 조건식{
        // 실행구문
}
else{
        // 실행구문
}

 

guard 문:

guard 조건식 else {
        // 거짓일때 실행
}

switch 문:

switch 변수 {
	case 0, 1:
		fallthough
		//swift는 c처럼 암시적인 Fall Through를 지원하지 않음
		//case가 0, 1일때 case 2까지 넘어가서 실행
		//c에서 break가 없는 상황과 비슷함
	case 2:
		//변수값 2 일때 실행(break 필요 없음)
	default:
		//일치하는 case가 없을 때 실행할 코드
}

#available 구문:

os 버전 별로 구문을 나누어서 작성해야   사용 

 

if #available( iOS9, OSX 10.10, WatchOS 1, *) {
	//마지막에 *로 끝인 걸 알려줌
	// iOS9용 구문, OSX 10.10용 구문, WatchOS 1용 구문
} else{
	//API를 사용하지 못 했을 때의 실패 처리
}

os 버전 별로 구문을 나누어서 작성해야 할 때 사용

 

 

3. 제어 전달문

제어흐름을 조정하여 코드가 실행되는  순서를 설정함

break, continue, fallthrough(switch 문에서 사용), return 이 있음

 

구문 레이블:

레이블이름 : while 조건식{
        실행 구문
}

outer : for  i in 1…5{
	// i를 1에서 5까지 반복
	inner : for j in 1…9{
	//j를 1에서 9까지 반복
		if(j == 3){
			break outer
			//outer에서 나감 
		}
		print(“\(i) * \(j) = \(i * j)”)
	}
}

c와 같은 언어에서 한 번에 반복문 여러개를 나갈 때는 보통 flag변수를 만들어서 나가게 하는데

swift에서는 루프에 레이블을 붙임으로써 인접한 반복문 뿐만 아니라 명시한 반복문 까지 나갈 수 있음