Rzutowanie typów: is, as?, as! i as
Bezpieczne sprawdzanie i konwertowanie typów za pomocą operatorów rzutowania Swift.
Rzutowanie typów: is, as?, as! i as to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Czym jest rzutowanie typów?
Rzutowanie typów pozwala sprawdzić instancję lub przekonwertować ją na inną klasę w hierarchii.
class Animal { var name: String = "Animal" }
class Dog: Animal { func bark() { print("Woof") } }
let a: Animal = Dog()
print(a.name)Operator is
Użyj is, aby sprawdzić, czy instancja jest określoną podklasą.
let a: Animal = Dog()
if a is Dog {
print("It's a dog")
}Rzutowanie w dół za pomocą as?
as? próbuje wykonać rzutowanie w dół i zwraca Optional. Jeśli operacja się nie powiedzie, wynikiem jest nil.
let a: Animal = Dog()
if let dog = a as? Dog {
dog.bark()
} else {
print("Not a dog")
}Rzutowanie w dół za pomocą as!
as! wymusza rzutowanie do podtypu. Używaj go tylko wtedy, gdy masz pewność co do typu; w przeciwnym razie powoduje awarię.
let a: Animal = Dog()
let dog = a as! Dog
dog.bark()Rzutowanie w górę za pomocą as
Rzutowanie z podklasy do nadklasy zawsze kończy się powodzeniem i używa as.
let dog = Dog()
let animal = dog as Animal
print(animal.name)Rzutowanie typów w kolekcjach
Tablice mieszanych typów określone jako [Any] wymagają rzutowania, aby można było używać określonych zachowań.
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) }
}Rzutowanie typów za pomocą AnyObject
AnyObject reprezentuje dowolną instancję klasy. Użyj as?, aby uzyskać konkretny typ.
let objs: [AnyObject] = [Dog(), Dog()]
for obj in objs {
if let d = obj as? Dog { d.bark() }
}Rzutowanie typów protokołów
Między typami protokołów a typami konkretnymi można wykonywać rzutowanie za pomocą tych samych operatorów.
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) }Dopasowywanie wzorców is w switch
Instrukcja switch języka Swift może dopasowywać typ za pomocą wzorca is.
let value: Any = 42
switch value {
case is Int: print("Integer")
case is String: print("String")
default: print("Other")
}Wzorce as? w switch
Połącz switch z let x as Type, aby jednocześnie sprawdzić typ i przypisać wartość do zmiennej.
let value: Any = "Swift"
switch value {
case let s as String: print("String: \(s)")
case let i as Int: print("Int: \(i)")
default: break
}Dobre praktyki bezpiecznego rzutowania
Zawsze preferuj as? zamiast as!, aby uniknąć awarii w czasie działania w kodzie produkcyjnym.
func describe(_ obj: AnyObject) {
if let dog = obj as? Dog { dog.bark(); return }
print("Unknown type")
}Szybkie sprawdzenie
Który operator zwraca Optional podczas rzutowania w dół?
Podsumowanie lekcji
Rzutowanie typów w Swift: is sprawdza typ, as? bezpiecznie wykonuje rzutowanie w dół do Optional, as! wymusza rzutowanie w dół, a as wykonuje rzutowanie w górę. W kodzie produkcyjnym preferuj as?.
Często zadawane pytania
Czy lekcja „Rzutowanie typów: is, as?, as! i as” jest bezpłatna?
Tak — pełny tekst „Rzutowanie typów: is, as?, as! i as” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Rzutowanie typów: is, as?, as! i as”?
Bezpieczne sprawdzanie i konwertowanie typów za pomocą operatorów rzutowania Swift. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Rzutowanie typów: is, as?, as! i as”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dziedziczenie klas i słowo kluczowe super
- override, final i zapobieganie dziedziczeniu
- Rzutowanie typów: is, as?, as! i as
- Destruktory i cykl życia pamięci