Opcionális értékek (a gyors alapok)

Opcionális értékek

Opcionális értékeket használhat olyan helyzetekben, ahol az érték nem létezik. Az opcionális érték két dolog egyikét mondja:

"Van egy értékem, és egyenlő x-vel"

"Nincs értelme"

Az opcionális értékek fogalma nem létezik a C vagy a C-objektumban. A C objektív leginkább az a képesség, hogy a nulla értéket olyan objektumról térjék vissza, amely objektumot ad vissza. Úgy tűnik, hogy a "nulla" azt jelenti, hogy nincs "helyes objektum", de ez csak tárgyakra vonatkozik, de nem struktúrákra, alap típusokra vagy számlálásokra. E típusok esetében az Objective-C módszerek általában valamilyen speciális értéket (például NSNotFound) adnak vissza, amely jelzi az érték hiányát. Ez a megközelítés abból indul ki, hogy a kódot hívó kód tudja, hogy létezik ez a különleges érték, és azt figyelembe kell venni. A Swift opcionális értékei lehetővé teszik, hogy bármilyen típusú értéket megadj, anélkül, hogy szükséged lenne további állandókra.

Adjunk egy példát. A String-típusnak van egy toInt metódus, amely megpróbálja lefordítani egy karakterlánc tartalmát egy Int egészértékű értékre. Azonban nem minden sor lehet egész számgá. A "123" sorból a 123-as szám lesz, de nem kaphat egész számot a "hello, world" karakterláncból.

A következő példa a toInt metódust használja arra, hogy megpróbálja átalakítani a karakterláncot Int:

// convertedNumber most "Int?" típusú (igen, az Int a kérdőjellel), vagy az úgynevezett "opcionális Int"

Mivel a toInt módszer nem működik, az opcionális Int, nem egy közönséges Int. Az opcionális int az Int-ként íródott? - a kérdőjel azt jelzi, hogy az érték opcionális, azaz. változó vagy állandó Int típusú? vagy int értéket tartalmazhat. vagy egyáltalán nem tartalmaznak értéket. (Nem tartalmazhat semmi mást, azaz Bool, String, stb. _not_ tárolható benne.) Vagy Int, vagy semmi.

Az opcionális változót "nincs érték" állapotba állíthatjuk, és hozzárendelhetünk egy speciális nullértéket:

A feltételes konstrukciókról további információkat a "Control of Control" fejezetben találhat honlapunkon.

Próbálja használni. Annak érdekében, hogy értéket kapjon azokban az esetekben, amikor nem az opcionális értékben van, futásidejű hibát okoz. hiba az alkalmazás futása közben. Ezért mindig ellenőrizze, hogy az érték a felkiáltójel használata előtt van-e.

Opcionális köteg

Az opcionális köteg segítségével kiderítheti, hogy az opcionális változó tartalmaz-e egy értéket, és ha van benne, tárolja egy ideiglenes állandóban vagy változóban. Egy opcionális köteg használható, ha és miközben ellenőrizni tudja, hogy az érték jelen van-e az opcionális változóban, és kivonja azt egy állandó vagy egy másik változóra egy műveletben. ha és miközben a "Control of Control" fejezetben írunk le honlapunkon.

Az opcionális kötegek az alábbiak szerint valósulnak meg:

Ez a kód így olvasható:

"Ha az opcionális Int, amit a possibleNumber.toInt módszer visszaad, tartalmaz egy értéket, majd hozzon létre egy új tényleges számot az aktuális értékkel."

Ha az átalakítás sikeres volt, akkor a tényleges szám az "if" kifejezés első ágában elérhetővé válik. Már van inicializálva egy értékkel, ezért nem kell felkiáltójelet használni. Példánkban csak a képernyőn jelenik meg.

Implicit, csomagolatlan opciók (implicit csomagolatlan opciók)

Amint a fentebb leírtuk, az opcionális értékek azt jelzik, hogy egy állandó vagy egy változónak nincs értelme. Ezt megpróbálhatjuk azáltal, ha az értéket egy felkiáltójel vagy opcionális csomag segítségével kapjuk meg.

Néha az alkalmazás struktúrájából látható, hogy az opcionális változó vagy állandó mindig az első telepítés után lesz értéke. Ezekben az esetekben hasznos lehet, ha valahányszor hozzáférünk ehhez a változathoz, szükség van arra, hogy ellenőrizzük és "kapjuk meg" az értéket.

Explicit kiterjesztett opcionális konstansok és változók akkor hasznosak, ha ismert, hogy egy adott érték állandóan jelen van egy változóban vagy konstansban egy bizonyos ponton. Az ilyen opcionális változók legfontosabb felhasználása a Swift-ben az, amikor az osztályt inicializálják, amint azt a "Tulajdonosok nélküli linkek és implicit módon bővített opcionális tulajdonságok"

Az implicit módon kibővített opcionális konstans vagy változó lényegében egy közönséges választható változó, de inoptívként is használható, anélkül, hogy bármikor meg kellene kapnia értékét. A legjobb módja ennek a pokolnak a megvizsgálása egy példa: