0Pricing
Swift Academy · Lekcja

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

  1. Dziedziczenie klas i słowo kluczowe super
  2. override, final i zapobieganie dziedziczeniu
  3. Rzutowanie typów: is, as?, as! i as
  4. Destruktory i cykl życia pamięci
← Powrót do Swift Academy