νμ μΊμ€ν
is
- is μ°μ°μλ νμ μ 체ν¬νλ μ°μ°μλ‘, λΉκ΅ κ²°κ³Όλ₯Ό bool νμ μ λ°νν©λλ€.(νμ 체νΉ)
let char: Character = "A"
print(char is Character)
// μΆλ ₯κ°: true
print(char is String)
// μΆλ ₯κ°: false
let bool: Bool = true
print(bool is Bool)
// μΆλ ₯κ°: true
print(bool is Character)
// μΆλ ₯κ°: false
as, as?, as!
π‘ νμ μΊμ€ν
- μΈμ€ν΄μ€μ "νμ "μ νμΈ νκ±°λ, ν΄λΉ μΈμ€ν΄μ€λ₯Ό μνΌ ν΄λμ€(λΆλͺ¨ ν΄λμ€)λ νμ ν΄λμ€(μμ ν΄λμ€)λ‘ μ·¨κΈνλ λ°©λ²
ν΄λμ€μ μμ
// Personμ μνΌ ν΄λμ€(λΆλͺ¨ ν΄λμ€)
class Person {
}
// Studentλ μλΈ ν΄λμ€(μμ ν΄λμ€) - μμλ°μ ν΄λμ€
class Student: Person {
}
// Teacherλ μλΈ ν΄λμ€(μμ ν΄λμ€) - μμλ°μ ν΄λμ€
class Teacher: Person {
}
// λΆλͺ¨μ μΈμ€ν΄μ€λ μμμ νμ
μ κ°μ§ μ μλ€.
// μΈμ€ν΄μ€μ νμ
μ λ³κ°λ‘ κ°μ Έκ° μ μλ€.
let person: Person = Person() - κ°λ₯
let person: Student = Person() - λΆκ°λ₯
let person: Teacher = Person() - λΆκ°λ₯
let student: Person = Student() - κ°λ₯
let student: Student = Student() - κ°λ₯
let student: Teacher = Student() - λΆκ°λ₯
let teacher: Person = Teacher() - κ°λ₯
let teacher: Student = Teacher() - λΆκ°λ₯
let teacher: Teacher = Teacher() - κ°λ₯
as - μ μΊμ€ν (μμ νμ μΌλ‘ λμ΄μλ κ²μ λΆλͺ¨ νμ μΌλ‘ λμ΄μ¬λ¦¬λ κ²)
- as μ°μ°μλ μ»΄νμΌ λ¨κ³μμ μΊμ€ν μ΄ μ€νλλ€.
- λ°λΌμ νμ νμ μΊμ€ν μ΄ μ±κ³΅ν κ²½μ°μλ§ μ¬μ©ν μ μλ€.
- μΊμ€ν μ μ€ν¨ν κ²½μ° μλ¬κ° λ°μνλ€.
- μΊμ€ν νλ €λ νμ μ΄ κ°μ νμ μ΄κ±°λ μνΌν΄λμ€ νμ μ΄λΌλ κ²μ μ λ as μ°μ¬μλ₯Ό μ¬μ©νλ€.
as? λ€μ΄μΊμ€ν (λΆλͺ¨ νμ μΌλ‘ λμ΄μλ κ²μ μμ νμ μΌλ‘ λ΄λ¦¬λ κ²)
- as? μ°μ°μλ λ°νμμ μΊμ€ν μ΄ μ€νλλ€.
- μ±κ³΅νλ©΄ μ΅μ λ νμ μ μΈμ€ν΄μ€λ₯Ό λ°ννκ³ μ€ν¨νλ©΄ nil μ λ°ννλ€.
- μ€ν¨ν κ°λ₯μ±μ΄ μμΌλ©΄ as?λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
as!
- as! μ°μ°μλ λ°νμμ νΉμ νμ μΌλ‘ κ°μ μΊμ€ν νλ€.
- κ°μ νμ μΊμ€ν μ μ€ν¨ν κ²½μ° λ°νμ μλ¬κ° λ°μν μ μλ€.
- μΊμ€ν μ μ±κ³΅ν κ²½μ° μΈμ€ν΄μ€λ₯Ό λ°ννλ€.(μ΅μ λ x)
class Person {
var id = 0
var name = "name"
var email = "hgk@gmail.com"
}
class Worker: Person { // Personμ μμ λ°κ³ μλ€.
// id
// name
// email
var salary = 300
}
class Programmer: Worker { // Workerλ₯Ό μμ λ°κ³ μλ€.
// id
// name
// email
// salary
var lang = "Swift"
}
// μ
μΊμ€ν
- as
let person1 = Person()
let worker1 = Worker()
let programmer1 = Programmer()
let personList = [person1, worker1, programmer1] // ποΈνμ
μ μ μΈνμ§ μμμ§λ§ Person νμ
μΌλ‘ μΈμ -> μ¦ μ
μΊμ€ν
μ΄ λμμ(μλμΌλ‘)
personList[1].name
//personList[1].salary // Person νμ
μΌλ‘ λ³΄κ³ μκΈ° λλ¬Έμ salaryμ μ κ·Όνμ§ λͺ»ν¨
let worker2 = Worker()
worker2.salary
let workerPerson = worker2 as Person // μΈμ€ν΄μ€μ νμ
μ λ³κ°λ€.
//workerPerson.salary // Person νμ
μΌλ‘ λ³΄κ³ μκΈ° λλ¬Έμ salaryμ μ κ·Όνμ§ λͺ»ν¨
// λ€μ΄μΊμ€ν
- as? / as!
// as?
let pro = programmer1 as? Programmer // νμ
λ³νμ΄ λ μλ μκ³ μλ μλ μκΈ° λλ¬Έμ μ΅μ
λμ 리ν΄
if let person2 = programmer1 as? Programmer {
person2.lang
}
if let person3 = worker1 as? Programmer { // Programmerκ° λ μμνμ
μ΄κΈ° λλ¬Έμ λΆκ°λ₯νλ€.
person3.lang // μ€ν μλ¨.
}
// as!
let pro2 = worker2 as! Programmer // Error : νμ
λ³ν μ€ν¨μ μ€λ₯
'π Today I Learned > Swift λ¬Έλ²' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] ν΄λ‘μ (0) | 2023.12.11 |
---|---|
[Swift] μ κ·Ό μ νμ (0) | 2023.12.11 |
[Swift] νλ‘νΌν° μ΅μ λ² (0) | 2023.12.08 |
[Swift] μ΄κΈ°ν (0) | 2023.12.07 |
[Swift] μμ (0) | 2023.12.07 |