형 변환: is, as?, as! 및 as
Swift의 형 변환 연산자로 형을 안전하게 확인하고 변환합니다.
형 변환: is, as?, as! 및 as은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
형 변환이란 무엇인가요?
형 변환을 사용하면 인스턴스가 계층 구조 내의 다른 클래스에 해당하는지 확인하거나 다른 클래스로 변환할 수 있습니다.
class Animal { var name: String = "Animal" }
class Dog: Animal { func bark() { print("Woof") } }
let a: Animal = Dog()
print(a.name)is 연산자
특정 하위 클래스의 인스턴스인지 확인하려면 is를 사용합니다.
let a: Animal = Dog()
if a is Dog {
print("It's a dog")
}as?를 사용한 하위 형식 변환
as?는 하위 형식으로의 변환을 시도하고 옵셔널을 반환합니다. 변환에 실패하면 결과는 nil입니다.
let a: Animal = Dog()
if let dog = a as? Dog {
dog.bark()
} else {
print("Not a dog")
}as!를 사용한 하위 형식 변환
as!는 하위 형식으로 강제 변환합니다. 형식을 확실히 알고 있을 때만 사용해야 하며, 형식이 잘못되면 충돌이 발생합니다.
let a: Animal = Dog()
let dog = a as! Dog
dog.bark()as를 사용한 상위 형식 변환
하위 클래스에서 상위 클래스로의 변환은 항상 성공하며 as를 사용합니다.
let dog = Dog()
let animal = dog as Animal
print(animal.name)컬렉션에서의 형 변환
[Any]로 지정된 여러 형식의 배열은 특정 동작을 사용하려면 형 변환이 필요합니다.
let items: [Any] = [1, "hello", Dog()]
for item in items {
if let d = item as? Dog { d.bark() }
if let s = item as? String { print(s) }
}AnyObject를 사용한 형 변환
AnyObject는 모든 클래스 인스턴스를 나타냅니다. 구체적인 형식을 추출하려면 as?를 사용합니다.
let objs: [AnyObject] = [Dog(), Dog()]
for obj in objs {
if let d = obj as? Dog { d.bark() }
}프로토콜 형식 변환
동일한 연산자를 사용하여 프로토콜 형식과 구체적인 형식 사이를 변환할 수 있습니다.
protocol Runnable { func run() }
class Cat: Animal, Runnable { func run() { print("Cat runs") } }
let r: Runnable = Cat()
if let cat = r as? Cat { print(cat.name) }switch에서 is를 사용한 패턴 일치
스위프트의 switch 문은 is 패턴을 사용하여 형식에 따라 일치시킬 수 있습니다.
let value: Any = 42
switch value {
case is Int: print("Integer")
case is String: print("String")
default: print("Other")
}switch 패턴에서의 as?
let x as Type을 switch와 결합하면 한 단계에서 확인과 바인딩을 모두 수행할 수 있습니다.
let value: Any = "Swift"
switch value {
case let s as String: print("String: \(s)")
case let i as Int: print("Int: \(i)")
default: break
}안전한 형 변환 모범 사례
프로덕션 코드에서 실행 중 충돌을 방지하려면 항상 as!보다 as?를 우선 사용합니다.
func describe(_ obj: AnyObject) {
if let dog = obj as? Dog { dog.bark(); return }
print("Unknown type")
}빠른 확인
하위 형식으로 변환할 때 옵셔널을 반환하는 연산자는 무엇인가요?
레슨 복습
스위프트의 형 변환에서 is는 형식을 확인하고, as?는 옵셔널로 안전하게 하위 형식 변환을 수행하며, as!는 하위 형식으로 강제 변환하고, as는 상위 형식으로 변환합니다. 프로덕션 코드에서는 as?를 우선 사용합니다.
AI 튜터와 함께 Swift을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 122
- 레슨
- 409
자주 묻는 질문
“형 변환: is, as?, as! 및 as” 강의는 무료인가요?
네 — “형 변환: is, as?, as! 및 as” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“형 변환: is, as?, as! 및 as”에서 뭘 배우나요?
Swift의 형 변환 연산자로 형을 안전하게 확인하고 변환합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“형 변환: is, as?, as! 및 as” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 클래스 상속과 super 키워드
- override, final 및 하위 클래스화 방지
- 형 변환: is, as?, as! 및 as
- 초기화 해제 구문과 메모리 수명 주기