guard let aikaiseen poistumiseen
Poista arvo optionaalista ja poistu virhetilanteessa aikaisin sisäkkäisyyden vähentämiseksi.
guard let aikaiseen poistumiseen on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
guard-rakenteen idea
guard tarkistaa ehdon ja poistuu nykyisestä näkyvyysalueesta, jos ehto ei täyty. Se on tarkoitettu aikaisiin poistoihin, jotka pitävät normaalin suorituspolun sisentämättömänä.
func greet(_ name: String?) {
guard let name else {
print("No name")
return
}
print("Hello, \(name)")
}
greet("Ada")
greet(nil)guard let -syntaksi
Kirjoita guard let value = optional else { return }. Toisin kuin if let-rakenteessa, purettu arvo säilyy näkyvissä guard-rakenteen jälkeen.
func double(_ text: String) {
guard let n = Int(text) else {
print("Not a number")
return
}
print(n * 2)
}
double("8")
double("x")Arvo säilyy käytettävissä
Koska guard poistuu epäonnistuessaan, kääntäjä tietää arvon olevan olemassa sen jälkeen. Voit käyttää sitä normaalisti funktion loppuosassa.
func length(of text: String?) {
guard let text else { return }
let count = text.count
print(count)
}
length("hello")else-haaran on poistuttava
guard-rakenteen else-lohkon on poistuttava nykyiseltä näkyvyysalueelta: return, break, continue tai throw. Kääntäjä valvoo tätä.
func process(_ value: Int?) {
guard let value else {
return
}
print("Processing \(value)")
}
process(99)guard let -lyhennys
Kuten if let, myös guard tukee lyhennysmuotoa: guard let name else { ... }, kun nimet täsmäävät.
func show(_ name: String?) {
guard let name else {
print("missing")
return
}
print(name)
}
show("Kai")Suora onnistunut polku
guardin suurin hyöty on suoraviivainen ja helposti luettava onnistunut polku. Verratkaa sisäkkäisiä if let -pyramideja useiden guard-rakenteiden sarjaan.
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)Tavallisten ehtojen tarkistaminen guardilla
guard toimii minkä tahansa Bool-ehdon kanssa, ei vain optionaalien. guard count > 0 else { return } keskeyttää suorituksen aikaisin.
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)guard silmukoissa
Silmukan sisällä guard voi käyttää continue-käskyä ohittaakseen iteraation, jos dataa puuttuu.
let inputs = ["1", "x", "3"]
for item in inputs {
guard let n = Int(item) else { continue }
print(n * 10)
}Useita sidontoja yhdessä guardissa
Yksi guard voi purkaa useita optionaaleja pilkuilla eroteltuina. Kaikkien on onnistuttava, jotta suoritus voi jatkua.
func combine(_ a: String?, _ b: String?) {
guard let a, let b else { return }
print(a + b)
}
combine("foo", "bar")where-tyyppiset tarkistukset guardilla
Voitte lisätä sidonnan jälkeen pilkulla eroteltuja Bool-ehtoja tarkentaaksenne, milloin guard läpäistään.
func validate(_ text: String?) {
guard let text, !text.isEmpty else {
print("invalid")
return
}
print("ok: \(text)")
}
validate("")
validate("hi")Milloin guard kannattaa valita
Käyttäkää guard-rakennetta funktion alussa oleviin esiehtoihin ja if let -rakennetta, kun tarvitsette arvoa vain lyhyesti yhden haaran sisällä.
func area(width: Int?, height: Int?) -> Int {
guard let width, let height else { return 0 }
return width * height
}
print(area(width: 3, height: 4))Pikatesti
Testatkaa guard let -rakennetta.
Kertaus: guard let aikaisempaan poistumiseen
guard let value else { return } purkaa optionaalin ja pitää arvon käytettävissä näkyvyysalueella tämän jälkeen. Sen else-lohkon on poistuttava, mikä pitää onnistuneen polun suorana ja helposti luettavana.
func f(_ x: Int?) {
guard let x else { return }
print(x)
}
f(5)Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”guard let aikaiseen poistumiseen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “guard let aikaiseen poistumiseen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”guard let aikaiseen poistumiseen”?
Poista arvo optionaalista ja poistu virhetilanteessa aikaisin sisäkkäisyyden vähentämiseksi. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”guard let aikaiseen poistumiseen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- if let ja lyhyt sidonta
- guard let aikaiseen poistumiseen
- Useiden optionaalien sitominen
- Optionaalinen pattern switch- ja for-rakenteissa