guard let으로 조기 종료하기
실패하면 옵셔널을 언래핑하고 조기에 종료해 중첩을 줄입니다.
guard let으로 조기 종료하기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
guard의 개념
guard는 조건을 확인하고 조건이 충족되지 않으면 현재 범위에서 빠져나갑니다. 정상 경로의 들여쓰기를 유지하면서 조기에 종료하도록 설계되었습니다.
func greet(_ name: String?) {
guard let name else {
print("No name")
return
}
print("Hello, \(name)")
}
greet("Ada")
greet(nil)guard let 문법
guard let value = optional else { return }을 작성합니다. if let과 달리 `unwrapped`된 값은 guard 이후에도 이후 범위에 남아 있습니다.
func double(_ text: String) {
guard let n = Int(text) else {
print("Not a number")
return
}
print(n * 2)
}
double("8")
double("x")값은 계속 사용할 수 있습니다
guard는 실패할 때 종료하므로 컴파일러는 이후에 값이 존재한다는 것을 알 수 있습니다. 함수의 나머지 부분에서 값을 일반적으로 사용할 수 있습니다.
func length(of text: String?) {
guard let text else { return }
let count = text.count
print(count)
}
length("hello")그렇지 않은 경우는 반드시 빠져나가야 합니다
가드의 else 블록은 현재 스코프를 빠져나가야 합니다. 즉, return, break, continue 또는 throw를 사용해야 합니다. 이는 컴파일러가 강제합니다.
func process(_ value: Int?) {
guard let value else {
return
}
print("Processing \(value)")
}
process(99)가드 렛 축약형
if let과 마찬가지로 가드도 축약형을 지원합니다. 이름이 같을 때 guard let name else { ... }처럼 작성할 수 있습니다.
func show(_ name: String?) {
guard let name else {
print("missing")
return
}
print(name)
}
show("Kai")평탄한 정상 경로
가드의 가장 큰 장점은 평탄하고 읽기 쉬운 정상 경로를 만드는 것입니다. 중첩된 if let 피라미드와 가드를 연속해서 사용하는 방식을 비교해 보십시오.
func register(name: String?, age: Int?) {
guard let name else { return }
guard let age else { return }
print("\(name) is \(age)")
}
register(name: "Mia", age: 28)일반 조건을 검사하는 가드
가드는 옵셔널뿐 아니라 모든 불리언 조건과 함께 사용할 수 있습니다. guard count > 0 else { return }은 일찍 빠져나갑니다.
func divide(_ a: Int, by b: Int) {
guard b != 0 else {
print("Cannot divide by zero")
return
}
print(a / b)
}
divide(10, by: 2)
divide(10, by: 0)반복문에서의 가드
반복문 안에서는 데이터가 없을 때 가드가 continue를 사용해 해당 반복을 건너뛰도록 할 수 있습니다.
let inputs = ["1", "x", "3"]
for item in inputs {
guard let n = Int(item) else { continue }
print(n * 10)
}하나의 가드에서 여러 값 바인딩하기
하나의 가드에서 쉼표로 구분하여 여러 옵셔널을 언래핑할 수 있습니다. 계속 진행하려면 모두 성공해야 합니다.
func combine(_ a: String?, _ b: String?) {
guard let a, let b else { return }
print(a + b)
}
combine("foo", "bar")where와 같은 검사와 함께 사용하는 가드
바인딩 뒤에 쉼표로 불리언 조건을 추가하여 가드가 통과되는 조건을 더 구체적으로 만들 수 있습니다.
func validate(_ text: String?) {
guard let text, !text.isEmpty else {
print("invalid")
return
}
print("ok: \(text)")
}
validate("")
validate("hi")가드를 선택할 때
함수의 시작 부분에서 사전 조건을 검사할 때는 guard를 사용하고, 분기 내부에서 잠시 값만 사용할 때는 if let을 사용하십시오.
func area(width: Int?, height: Int?) -> Int {
guard let width, let height else { return 0 }
return width * height
}
print(area(width: 3, height: 4))간단히 확인하기
가드 렛을 확인해 보십시오.
정리: 가드 렛으로 조기 종료하기
guard let value else { return }은 옵셔널을 언래핑하고 이후에도 해당 값을 스코프에서 사용할 수 있게 합니다. else 블록은 반드시 빠져나가야 하므로 정상 경로가 평탄하고 읽기 쉬워집니다.
func f(_ x: Int?) {
guard let x else { return }
print(x)
}
f(5)자주 묻는 질문
“guard let으로 조기 종료하기” 강의는 무료인가요?
네 — “guard let으로 조기 종료하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“guard let으로 조기 종료하기”에서 뭘 배우나요?
실패하면 옵셔널을 언래핑하고 조기에 종료해 중첩을 줄입니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“guard let으로 조기 종료하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- if let과 간결한 바인딩
- guard let으로 조기 종료하기
- 여러 옵셔널 바인딩하기
- switch와 for에서 옵셔널 패턴 사용하기