可选的ve解包

Merhaba sevgili TurkishKitokuyucaları。 👋🏼Bugünkükonumuzda kod yazarkensüreklikarşımızaçıkan(!)ve(?) 哈迪başlayalım!

可选的Nedir吗?

Birçokyazılımdilini birbirindenfarklıkılanbir yan bulunur。 Swift dilinidiğerdillerdeneşsizkılanözelliklerdenbiri de“ Optional”kavramı。 Swift dilindedeğişkenve sabitler可选olaraktanımlanabilir。

可选的KavramınaNedenİhtiyaçDuyarız吗?

Swift dilinde sabit vedeğişkenleri可选olaraktanımlayabileceğimizdenbahsettik。 您可以在互联网上下载互联网,也可以在其他网站上随意选择。 Çénükü互联网ten veri gelipgelmeyeceğinibilemeyiz。

Daha Basit Bir Dil ileAnlayalım

Örnek1 —Önümüzdebir kutu var。 Bu kutununiçinidoldurabileceğimizgibiboşdabırakabiliriz。 Bu tamamen bizimseçimimizdir。
Örnek2-比兹·比尔·库图·盖蒂尔迪 Bu kutununiçiboşya da dolu olabilir。 Bu tamamenkarşıtarafınseçimidir。

可选的DeğişkenTanımlama

Xcode’dan yeni bir游乐场Projesiaçabilirsiniz。

照片:gibitanımlıyoruz:

您可以在’nil’上买到durumdaverdiğitepkiyebakalım:

myName ve myLastName olmadurumlarındaXcode bizekızdı😃Peki Neden吗?
myName ve myLastName )işaretibulunmuyor。 Buyüzden’Optional’değildir。 Birbaşkadeyişlemutlaka birdeğeriolmakzorundadır。
mySecondName “可选”的birdeğişkentürünesahiptir。 ( 字符串?) Buyüzdennil olmasındahiçbirsakıncayoktur。

叶尼·德勒勒·阿塔玛

Nil olandeğişkenleredeğerleriniatayalımve hepsini tek birdeğişkendetoplayalım:

Kodlamayıtamamladıktan声纳Xcode bize tekraruyarıverecektir:

可选(字符串?)olan birdeğişkeni,可选olmayan(字符串)birdeğişkenedönüştürmemiziistiyor。 Bunu yapabilmekiçin 可选 değişkenimizi 展开

解开奈迪尔?

展开 ile 可选,可选正常提示。
可选 olan birdeğişkeni普通birdeğişkenile bir aradakullanamayız。 可选的 olandeğişkeni打开包装。 Bunu yapabilmenin birkaçyolu var。

  • 强制展开
  • 隐式展开
  • 可选装订

强制展开

fullimdilik fullName getirelim。

Sonradeğişkenlerimizi 打印 konsolayazdıralımve aradakifarkıdaha iyianlayalım。

Sonucumuzda’Optional (“Hüseyin”)’ yazıyorbuna dikkat edelim。 Sonucumuzugördüğümüzegöre拆开ileleminegeçelim。

Neyaptık吗?

强制展开 işlemimizi işertinikullanarakyaptık。 可选的 değişkenimizi 展开 ederek normal tiptekideğişkeneçeviriyoruz。

mySecondName newMySecondName常规提示。 哈迪测试伊德琳。

Gördüğünüzgibi’Hüseyin’verisininyanındaki’ 可选 ‘yazısıgitti。

强制展开yaptığımızdeğişkennil olursa ne olur吗?
mySecondName olursa neler olur ineleyelim。

解开包装的图片。 İbte bubüyükbir problemdir。 解开nil olursauygulamamız崩溃olacak vekapanacaktır。 Bu dageliştiricilerinistemediğibir durumdur。 强制展开 yapmanızçoktavsiye edilmez。 Eğerolacaklardan%100 eminseniz o zaman uygulayabilirsiniz。

隐式展开

Buradadeğişkenimizitanımladığımızsırada işaretinikullanırız。 Derleyicimize; ‘Budeğişkenikullanacağımzaman kesinlikledeğeralacak’脱口秀oluyoruz。 Bu birazsıkıntılıbir durum。 işaretinikoyarak derleyicimizesözverdik ve uygulamaiçerisindesüreklitakip edecek ve birdeğeratanıpatanmadığınıkontrol etmek zorundakalacağız。 EğerdeğeratanmamışsaXcode bizekızacakve’Sen banasözvermiştinbudeğişkenbirdeğeralacak ama banaboşgeldi。’ diyip崩溃olacak。

Bos kutuörneğimizegeridönecekolursakeğer。 Doluolmasınıbeklediğimizbir kutu bizeboşgelirse sinirlenirizdeğilmi吗? 😁
Xcode’da bizekızıpuygulamamızıkapatabiliyor。 😅

密码: 广告ikinci广告豆类 广告隐式解压缩隐式解包yaparsanızvekullanıcının 隐式 解压缩 yaksa uygulama 崩溃 olacaktır。

哈迪(Hadi Deneyelim)。

Burada secondName değerini 隐式展开 yaptık。 ŞimdisecondNamedeğerininilyapalımve konsolabakalım。

Yine bir hataaldık。 Bizyaptığımızbu uygulamada secondName 隐式 secondName包yapıp,kullanıcıdanikinci isim istemeye kalkarsakkullanıcıda’Benim ikinci biradımyok Olmayanadımıyazmam’der veuygulamamızile olanmacerasıbaşlamadanbitebilir。

Farkındaha iyianlaşılabilmesiiçinaynıdeğişkenlerebir de Force Unwrappingişleminiuygulayalım。

secondName: String? — Budeğişkennil olabilir。

imlicitSecondName: String = secondName! — BuradayukarıdakisecondNamedeğişkenininboşgelmeyeceğinisöylüyoruz。 secondName secondNamedeğişkeninil gelirseuygulamamıztekrarçökecektir。 哈迪测试伊德琳。

BuradahatayıimlicitSecondNamedeğişkenininbulunduğusatırdaaldık。 ÇanküsecondNamedeğişkenininyanındaünlemişaretivar ve bu budeğişkeninboşgelmeyeceğinisöyledik,ancakboşgeldi。
Hadi buünlemişaretindenveuygulamamızınçökmederdindenkurtulalım😉

可选装订

BuradayapacağımızičlemfarklıgörünsedeulaşacağımızsonuçveamacımızForce Unwrapping ileaynıdır。 可选的 tipindeki birdeğişkeni普通birdeğişkeneçevireceğiz。 Diwrer解开çéşitlerinegöre和önemliavantajınil olsa胆汁uygulamamız崩溃olmadançalışmayadevam edecektir。 哈迪·登耶林(Hadi deneyelim)。 🙂

Kodlarıyazdıysanızçalıştırıpkonsola birgözatalım。

提示1: mySecondName veçalıştıralım。

纳勒·奥卢耶尔(Neler Oluyor)? 😱
Burada mySecondName 如果没有提示则将没有提示。

Bakalımnil olursa neler oluyor?

提示2:mySecondNamedeğişkeninilyapalım。

Kodumuzudüzenledikveçalıştırıpkonsolabakalım:

Burada ise secondName 如果没有koşulusağlanmadı, 那么您的名字将不存在。 否则,您会遇到其他问题。

Başkabiryöntemedahabakalım…

守卫

Kodlarımızıbuşekildeoluşturuyoruz。

Uygulamamızıkullanacak olankişininikinci ismi olupolmadığınıkontrol eden bir fonksiyonyazdık。 Fonksiyonumuzçalışmamantığışuşekildedir, mySecondName ise elsebloğununiçinegirip print("\(myName)\(myLastName)") komutunuçalıştıracak ve konsola“ UfukKöşker ”yazısınıyazdıracak。 达哈·索纳(Daha sonra) 返回 bloğusayesinde fonksiyonçağırıldığı耶尔·杰里·德内塞克蒂尔(yere geridönecektir)。 Alttaki print("\(myName)\(secondName)\(myLastName)") komutuhiççalışmayacaktır。

例如, mySecondName print("\(myName)\(secondName)\(myLastName)") komutuçalışacaktır。 Komutumuzçalıştıktansonra fonksiyonçağırıldığıyere geridönecektir。

Böyleliklebir konumuzun daha sonuna geldik。 可选项目Swift dilininönemlikonularındanbir tanesiolduğunuhatırlatmakistiyorum。 Bir sonrakikonularımızdagörüşmeküzere🖐🏼