Swift 흐름 제어 구문

DEVJUN·2022년 4월 22일
0

Swift 문법

목록 보기
2/14
post-thumbnail

1. 반복문

  반복문은 주어진 조건에 의해 특정 코드 블록을 반복적으로 실행할 수 있게 해주는 구문이다. Swift에서 반복문은 다른 언어들과 마찬가지로 For문과 While문이 있다. 스위프트에서의 for문은 for ~ in 구문이다. 바로 문법을 알아보자! 👉🏻

1. for ~ in 구문

	for i in 1...5 {
    	print(row)  
    }
      1
      2
      3
      4
      5
    var lang = "swift"  

	for char in lang.characters {
    	print("\(char)")
    }
      s
      w
      i
      f
      t
    // 루프 상수 생략
    
    let size = 5
    let padChar = "0"
    var keyword = "3"
    
    for _ in 1...size {
    	keyword = padChar + keyword
    }
    
    print("\(keyword)") // 000003
      
      
      
    // 중첩 구문 (구구단)
    
    for i in 1 ..< 10 {
    	for j in 1 ..< 10 {
        	print("\(i) X \(j) = \(i * j)")
        }
    }
    

2. while 구문

	var n = 2
    while n < 1000 {
    	n =  n * 2
    }
    print("n = \(n)")

2. 조건문

1. if - else 구문

	var adult = 19
    var age = 21
    
    if age < adult {
    	print("미성년자")
    } else {
    	print("성인")
    }

2. guard 구문

guard 구문은 swift를 공부하면서 처음 본 문법이므로 조금 더 자세히 정리해보려 한다. guard구문과 if문의 차이점은 guard 구문에는 else 블록이 필수이지만, 표현식의 결과가 참일 때 실행되는 블록이 없다는 점이다. guard 구문은 주로 후속 코드들이 실행되기 전에 특정 조건을 만족하는지 확인하는 용도로 사용한다. 다시 말해 특정 조건을 만족하지 않은 채로 후속 코드를 실행하면 심각한 오류가 발생할 경우에 전체 구문을 조기 종료 하기 위한 목적으로 사용되는 것이다.

	//나눗셈 함수에서 분모가 0인 경우를 제어
	func divide(base: Int) {
    	guard base != 0 else {
        	print("연산 불가")
            return
        }
        
        guard base > 0 else {
        	print("base 가 0보다 커야함")
            return
        }
    }
    
    
    let result = 100 / base
    print(result)
    
    
    guard base != 0 else {
        	print("연산 불가")
            return
    } 
    
    위 구문을 if문으로 바꿀수 있다.
    
    if base == 0 {
        	print("연산 불가")
            return
    } 
    
    if문으로 나타낼 시 조건식이 반대로 바뀌는 것을 볼 수 있다.
    

3. #available 구문

앱을 개발하다 보면 OS 버전별로 구문을 나누어 작성해야 할 때가 있다. 특정 API를 사용할 때에는 애플 개발자용 API문서를 확인해서 사용 가능한 OS버전과 기기를 체크 해야 한다. 이처럼 OS 버전 별로 구문을 분리해야 할 때 #available 구문을 사용한다.

	if #available(iOS 9, OSX 10.10, watchOS 1, * ){
    		
    }else {
    
    }

4. switch 구문

	let val = 2
    
    switch val {
    	case 1:
        	print("일치한 값은 1")
    	case 2:
        	print("일치한 값은 2")
        case 2:
        	print("일치한 값 2가 더 있음")
        default:
        	print("어떤 패턴과도 일치하지 않음")    
    }

위 코드 실행 결과는 다른 언어라면 break가 없기 때문에 case2, case2, default에 걸려 세 개의 문장이 실행된다. 그러나 swift의 switch구문 특성은 비교 패턴을 하나만 실행하고 종료가 되기 때문에 일치한 값은 2라는 문장만 출력하고 종료된다.


Swift에서는 하나 이상의 비교 패턴을 연이어 작성할 수 있는 문법을 제공한다. 또한 튜플에도 이를 응용할 수 있다. 이를 통해 키 입력의 낭비를 줄이고 코드를 간결하게 만들어 준다.

	let value = 2

    switch value {
        case 0, 1:
            print("0 또는 1입니다.")
        case 2, 3:
            print("2 또는 3입니다.")
        default :
            print("어느 패턴과도 일치하지 않습니다.")
    }
  
  
  	var value1 = (2, 3)

    switch value1 {
        case let (x, 3) :
            print("튜플의 두 번째 값이 3일 때 첫 번째 값은 \(x)입니다.")
        case let (3, y) :
            print("튜플의 첫 번째 값이 3일 때 두 번째 값은 \(y)입니다.")
        case let (x, y):
            print("튜플의 값은 각각 \(x), \(y)입니다.")
    }
  
  
    var value2 = (2, 3)

    switch value2 {
        case(0..<2, 3):
            print("범위 A에 포함되었습니다.")
        case(2..<5, 0..<3):
            print("범위 B에 포함되었습니다.")
        case(2..<5, 3..<5):
            print("범위 C에 포함되었습니다.")
        default:
            print("범위 D에 포함되었습니다.")
    }

profile
🧑🏻‍💻iOS

0개의 댓글