longlivedrgn
Miro 찾기
longlivedrgn
전체 방문자
오늘
어제
  • 분류 전체보기 (74)
    • Swift (36)
    • iOS (31)
    • Algorithm (0)
    • Architecture, Design Patter.. (1)
    • Computer Science (6)
      • 컴퓨터 네트워크 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
longlivedrgn

Miro 찾기

[Swift] 함수 return에대한 고민
Swift

[Swift] 함수 return에대한 고민

2023. 2. 20. 23:24

함수의 return에 대한 고민

  • 함수의 바디에서 return을 만나면 그 이후는 진행하지도 않고 끝난다!
// Code after 'return' will never be executed!
// 항상 true를 return한다!
func returnBool(x: Int) -> Bool {
    return true
    if x > 5 {
        return true
    }
    return false
}
  • 아래와 같은 예에서도 만약 x가 5보다 클 경우, if문을 만족하므로 return true를 하고 함수를 끝낸다!
func returnBool(x: Int) -> Bool {
    if x > 5 {
        return true
    }
    return false
}

print(returnBool(x: 6)) // true

for 문 속 guard문

  • 아래의 코드에서는 문제가 생긴다!
  • return을 쓸 수는 없고 break나 continue를 활용해야된다.
for i in 0..<5 {
    guard i < 4 else { return } //error
    print(i)
}

함수 안 for 문 속 guard문

  • 앞서 본 것처럼, 함수의 바디에서 return을 만나면 그 이후는 진행하지도 않고 끝난다!
    • for문을 돌다가 guard문의 else문을 타서 return을 만나는 순간 for문만 종료되는 것이 아니라, 함수 전체가 종료된다!
func 함수() {
    for i in 0..<7 {
        print("guard문 전 \\(i)")
        guard i < 4 else { return }
        print("guard문 후 \\(i)")
        print("------------")
    }
}

함수()
"""
guard문 전 0
guard문 후 0
------------
guard문 전 1
guard문 후 1
------------
guard문 전 2
guard문 후 2
------------
guard문 전 3
guard문 후 3
------------
guard문 전 4
"""
  • 그렇다면, 아래와 같은 예는 어떻게 될까? for문이 중첩되어있다면?
    • 이것 또한, 위와 같은 결과를 던진다. return을 만나는 순간 그냥 함수 자체가 종료된다!
func 함수() {
    for _ in 0..<3 {
        for i in 0..<7 {
            print("guard문 전 \\(i)")
            guard i < 4 else { return }
            print("guard문 후 \\(i)")
            print("------------")
        }
    }
}

함수()

"""
guard문 전 0
guard문 후 0
------------
guard문 전 1
guard문 후 1
------------
guard문 전 2
guard문 후 2
------------
guard문 전 3
guard문 후 3
------------
guard문 전 4
"""

⁉️ 중첩 for문 속 continue와 break

  • 가장 인접한 for문에만 영향을 준다!
  • 인접한 for문 외에 for문은 아무런 영향을 받지 않는다.
저작자표시 (새창열림)

'Swift' 카테고리의 다른 글

[Swift] mutating  (0) 2023.02.24
[Swift] 값 타입, 참조 타입, let, var  (0) 2023.02.24
[Swift] Error Handling  (0) 2023.02.11
[Swift] 프로퍼티 옵저버  (0) 2023.02.11
[Swift] 상속(Inheritance)  (0) 2023.02.11
    'Swift' 카테고리의 다른 글
    • [Swift] mutating
    • [Swift] 값 타입, 참조 타입, let, var
    • [Swift] Error Handling
    • [Swift] 프로퍼티 옵저버
    longlivedrgn
    longlivedrgn

    티스토리툴바