IOS/Swift

[TIL] Swift. Flow Control

Flow Control

코드의 흐름을 컨트롤 하는 것을 말한다.

  1. While loop

 While의 조건문의 조건이 만족되지 않을 때 까지 실행된다
//--- while 
  //표현식
//while 조건 {
//    실행문
//}


  var i = 0
  while i < 10 {
     print(i)
     if i == 5 {
        break
   }
    i += 1
}
    //// 이경우 에는 조건을 먼저 보고 코드수행을 하게된다.
    // break  -- 코드를 넣어두면 만족할때에 더이상 반복하지 않고 중단.
  i = 0
  repeat {
     print(i)
     i += 1
 } while i < 10
  // 이경우에는 코드수행을 먼저 하고 조건을 검사한다.

 2. For loop

지정된 조건에 맞추어 실행된다
  • Closed Range ( 마지막 정수를 포함하는 범위) - let closedRangee = 0...10 //{lowerBound 0, upperBound 10} 로그에는 0부터 10까지 찍힌다
  • halfClosedRange ( 마지막 정수를 포함하지 않는 범위) - let halfClosedRange = 0..<10 // {lowerBound 0, upperBound 10} 로그에는 0부터 9까지 찍힌다
  • For문을 표현하는 두가지 방식
for i in closedRangee {
    if i % 2 == 0 {
        print("---> 짝수: \(i)")
    }
}

for i in closedRangee where i % 2 == 0 {
    print("---> 짝수: \(i)")
}
//where은 where 다음의 코드가 만족할때 다음의 코드가 실행된다
  • Continue를 사용하면 특정한 부분을 건너 뛸 수 있다
for i in closedRangee {
    if i == 3 {
        continue
    }
    print("---> \(i)")
}
  • for 문을 중첩해서 사용할수 있지만 가독성이 떨어지고 성능에도 좋지 않기 때문에 많이 쓰이는걸 지양해야 한다.
  • for문을 반대로 돌려보자. stride
// 0까지에서 to는 자기 자신을 포함하지 않는다
// 5에서 부터 0까지 -1의 움직임으로 라는 의미이다
for i in stride(from: 5 , to: 0, by: -1)
{
   print(i)
 }
 // 5, 4, 3, 2, 1
 
//만약 0을 포함하고 싶다면 to가 아닌 through를 적으면 된다. 
for i in stride(from: 5 , to: 0, by: -1)
{
   print(i)
 }
 // 5, 4, 3, 2, 1, 0

3. Switch statement

Swift에서는 다른 언어와 달리 switch를 지원하는 강력한 기능이 있다
기본적으로 스위치는 case에 작성된 코드의 조건에 맞을때 실행된다.
  • 다른 언어와 비슷하게 스위치는 특정한 조건을 만족하면 값을 실행 시킨다
  • 주의 해야할 것은 중간에 만족하는 조건을 만나게 되면 실행시키고 스위치 구문이 중단되게 된다.
  • default값을 주지 않으면 에러가 발생되게 된다 == 모든 케이스에 대해 조건을 줘야한다.
  • case 의 조건을 0...10 이렇게도 설정할수 있다.
  • 스위치 구문 1번 케이스
let num = 10

switch num {
case 0:
    print("--> 0 입니다")
case 0...10:          // 이런식으로 ... spred syntax 사용가능
    print("--> 0 ~ 10사이 입니다")
case 10:
    print("--> 10 입니다")
default :
    print("--> 나머지 입니다")
}
  • 스위치 구문 2번 케이스
let pet  = "bird"
switch pet {
case "dog", "cat", "bird"  :           // 이런식으로 , 다음에 케이스 추가가능
    print("--> \(pet) 입니다")
default:
    print("---> 잘 모르겠습니다")
}
  • 스위치 구문 3번 케이스
let number = 20

switch number {
case _ where num % 2 == 0:   // where문을 사용해서 조건 주기가 가능하다, 또한 _ 는 아무것도 넣지 않을때 사용된다
    print("---> 짝수")
default:
    print("---> 잘 모르겠습니다")
}
  • 스위치 구문 4번 케이스
let coordinate = (x: 0, y:10)

switch coordinate {
case (0, 0):
    print("---> 원점이네요")
case (_, 0):
    print("---> X축 이네요")
case (0, _):
    print("---> Y축 이네요") // _ 뭐가되든 상관없어 x가 0이면되
default:
    print("---> 좌표 어딘가")
}

switch coordinate {
case (0, 0):
    print("---> 원점이네요")
case (let x, 0):
    print("---> X축 이네요, x:\(x)")
case (0, let y):
    print("---> Y축 이네요m y:\(y)") // _ 뭐가되든 상관없어 x가 0이면되
case (let x, let y) where x == y:
    print("---> x와 y가 같네요 x,y : \(x), \(y)")
case (let x, let y):
    print("---> 좌표 어딘가 x,y : \(x), \(y)")
}
// 안에 변수를 선언해서 프린트 문자열에 넣어줄수도 있고
// where 을 사용해서 추가적인 조건을 넣을 수도 있다

'IOS > Swift' 카테고리의 다른 글

[TIL] Swift. Collection  (0) 2020.09.29
[TIL] Swift. Optional  (0) 2020.09.24
[TIL]Swift. Function  (0) 2020.09.23
[TIL] Swift 기초 정보  (0) 2020.09.21
[TIL] Swift의 기본 언어적 특징  (0) 2020.09.19