Swift Academy · Oppitunti

Optionaalit

Optionaalit

Oppitunti 1/112 vaihetta

Optionaalit on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/1. 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ä 1 oppituntia.

Johdanto

Hei,

Käytetään ilmaisemaan, että optionaalisella muuttujalla ei välttämättä ole arvoa.

Jos optionaalisella tyypillä määritellyllä muuttujalla on arvo, optionaali puretaan ja arvoa käytetään. Muussa tapauksessa arvoa ei ole.

Optionaalien käyttö Swiftissä monien tyyppien kanssa

Sitä voidaan verrata Obj-C:n nil-osoittimeen. Nil-osoitin on kuitenkin käytettävissä vain objektityypeille.

Swiftin optionaaleja käytetään objektityyppien lisäksi myös Struct-, enum- ja perustyypeille.

var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable 
automatically takes the value of nil.
*/

Swiftin nil ja Obj-C:n nil eivät ole sama asia

Swiftin nil ja Obj-C:n nil eivät ole sama asia.

Obj-C:n nil-osoitin ilmaisee objektin puuttumisen. Se ei ole Swiftin nil-osoitin. Swiftin nil ilmaisee datan puuttumisen, ja sitä voidaan käyttää muidenkin kuin objektityyppien kanssa.

Pakotettu purkaminen

Optionaaleiksi määritellyt muuttujat voidaan avata force unwrap -menetelmällä.

Huutomerkkioperaattorilla optionaali voidaan pakottaa purettavaksi, mutta sen käyttö ei yleensä ole suositeltavaa.

Jos viitattua arvoa ei ole saatavilla force unwrap -toiminnon aikana, syntyy suorituksenaikainen virhe.

let convertedNumber : Int? = 123
if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

Optionaalin käsittely optionaalisidonnan avulla

if let-lohkolla voimme käyttää optionaalisen muuttujan arvoa sijoittamalla sen vakioon tai muuttujaan.

Tämä on elegantimpi tapa kuin force unwrapin käyttö.

var possibleNumber : String? = "10"

if let actualNumber = possibleNumber {
    print(actualNumber)
}

Esimerkki

if let firstNumber = Int("4"), let secondNumber = Int("42"), 
  firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
 If at least one of them is false,
 it will not be entered in the if blog.
*/

Implisiittisesti purettavat optionaalit

Joissakin tapauksissa optionaalille annetaan arvo ensimmäisessä vaiheessa, ja seuraavissa vaiheissa tiedetään varmasti, ettei se ole nil.

Tällöin optionaalin (?) sijaan käytetään (!) -operaattoria, jolla ilmaistaan, ettei tämä optio ole varmasti nil. 

Tätä määrittelytapaa kutsutaan nimellä ”implisiittisesti purettavat optionaalit”.

Implisiittisesti purettavat optionaalit

Yleisin käyttökohde on luokan alustamisvaihe.

Toisin kuin tavallisia optionaaleja, implisiittisesti purettaviksi määriteltyjä muuttujia ei tarvitse purkaa erikseen.

let possibleString: String? = "An optional string."
 // requires an exclamation mark
let forcedString: String = possibleString!

let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString 

Esimerkki

Jos tämän tyyppisille muuttujille annetaan arvoksi nil, syntyy suorituksenaikaisia virheitä.

Otetaan esimerkki

/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional 
in the same way we use classic optional.
*/

var assumedString: String! = nil

if let definiteString = assumedString {
    print(definiteString)
}
// Prints "An implicitly unwrapped optional string."

Varoitus

Jos muuttuja voi olla nil, implisiittisesti purettavaa optionaalia ei pidä käyttää.

Nil-yhdistämisoperaattori

Se helpottaa optional-tyyppien purkamista.

Katsotaan esimerkki.

let defaultColorName = "red"
 // defaults to nil
var userDefinedColorName: String?  

var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil, 
so colorNameToUse is set to the default of "red"
*/


// a != nil ? a! : b 
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn, 
otherwise it returns the default value, ie b.
*/

Onnittelut

Onnittelut 🎉

Optional-käsite on yksi Swiftin tärkeimmistä ominaisuuksista. Optional-arvojen avulla pääsemme eroon nil-tarkistuksista, kirjoitamme koodimme tyylikkäämmin ja teemme sovelluksistamme turvallisempia.

Nähdään seuraavassa oppitunnissa 🥳

Optionaalit — kuvitus 12
Aloita maksutta

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 ”Optionaalit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Optionaalit”. 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ä 1 oppituntia.

Mitä opin oppitunnilla ”Optionaalit”?

Optionaalit 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 1/1.

Kuinka kauan ”Optionaalit”-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.

← Takaisin: Swift Academy