Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mobile Programming Optional
Search
yuichiro_takahashi
December 19, 2018
Technology
0
140
Mobile Programming Optional
モバイルプログラミングの授業で使うスライドです
yuichiro_takahashi
December 19, 2018
Tweet
Share
More Decks by yuichiro_takahashi
See All by yuichiro_takahashi
App Clip - in a nutshell
yuichirokato
0
350
巨大な機能を VIPER + MicroViewController でいい感じに実装した話
yuichirokato
1
810
Mobile Programming Protocol Extension
yuichirokato
0
83
Mobile Programming Protocol
yuichirokato
0
87
Mobile Programming enum
yuichirokato
0
170
Mobile Programming Struct
yuichirokato
0
130
Mobile Programming Initializer Beta
yuichirokato
0
120
Mobile Programming Inheritance
yuichirokato
0
150
Mobile Programing Property & Method
yuichirokato
0
170
Other Decks in Technology
See All in Technology
Lazy application authentication with Tailscale
bluehatbrit
0
210
SmartNewsにおける 1000+ノード規模 K8s基盤 でのコスト最適化 – Spot・Gravitonの大規模導入への挑戦
vsanna2
0
130
第4回Snowflake 金融ユーザー会 Snowflake summit recap
tamaoki
1
280
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
27k
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
380
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
310
Lakebaseを使ったAIエージェントを実装してみる
kameitomohiro
0
130
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
150
United airlines®️ USA Contact Numbers: Complete 2025 Support Guide
unitedflyhelp
0
310
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
2
200
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
50
20k
品質と速度の両立:生成AI時代の品質保証アプローチ
odasho
1
360
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
950
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Optimizing for Happiness
mojombo
379
70k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Transcript
OPTIONAL TYPE MOBILE PROGRAMMING 19TH DEC
OPTIONAL TYPE?
ςΩετ OPTIONAL TYPE? ▸ Swiftʹසൟʹग़ͯ͘Δ ? ! ϚʔΫͷਖ਼ମ ▸
Swift͚ͩͰͳ͘ϞμϯͳݴޠʹΑ͘ݟΒΕΔ nil (null) Λ҆શʹѻ͏ҝͷػೳ ▸ ී௨ͷ͚ͩͰͳ͘ nil ೖΕΔ͜ͱ͕Ͱ͖ΔίϯςφͷΑ͏ͳͷ ▸ ܕఆٛͷࡍʹඌʹ ? Λ͚ͭΔ͜ͱͰOptional Type ʹͳΔ ▸ SwiftͰOptionalͱͯ͠ఆٛ͞ΕͨมͷΈnilΛೖ͢Δ͜ͱ͕Ͱ͖Δ ▸ Optional TypeʹͳΔͱී௨ͷܕͱͯ͑͠ͳ͍ͷͰҰOptional͔Β σʔλΛऔΓग़͢ඞཁ͕͋Δ
ςΩετ ࣮ࡍͷίʔυ // มͷ߹ var indexOrNil: Int? = 0 //
͜ͷΑ͏ʹॻ͚Δ var optionalNum: Optional<Int> = 10 // ؔͷ߹ func getImage(named: String?) -> UIImage? { // লུ ... } // ͜ΕͰ͖ͳ͍ print("added: \(optionalNum + 10)”) // ͳΜΒ͔ͷํ๏ͰOptional͔ΒΛऔΓग़͢ඞཁ͕͋Δ(ࠓճ!ϚʔΫ) print("added: \(optionalNum! + 10)”)
ͳΜΒ͔ͷํ๏ͬ ͯʁ
OPTIONAL UNWRAP ʹ͍ͭͯ
ςΩετ OPTIONAL UNWRAP? ▸ ίʔυͷྫͰݟͨΑ͏ʹOptional typeҰσʔλΛऔΓ ग़͔ͯ͠Β͏ඞཁ͕͋Δ ▸ ͜ΕΛ unwrap(։ࣔ?)
ͱݺͿ ▸ unwrap͢Δํ๏͍͔ͭ͋͘ΔͷͰঢ়گʹΑ͍͚ͬͯ Δ͜ͱ͕େࣄ
ํ๏1. FORCED UNWRAP
ςΩετ FORCED UNWRAP? ▸ ଟ͜Ε͕Ұ൪͓खܰͳํ๏ ▸ optionalͰఆٛ͞Εͨมͷඌʹ ! ϚʔΫΛ͚ͭΔ͚ͩ ▸
͕ͨͩ͋͠Δ͔nil͔Ͱ͋Δ͔ʹؔΘΒͣڧ੍తʹOptionalΛ unwrapͯ͠͠·͏ ▸ ͦͷҝnilͩͬͨ߹ϓϩάϥϜ͕Ϋϥογϡ͢Δ ▸ ͲΜͳͱ͖͕࣮֬ʹೖ͍ͬͯΔͱ͍͏͜ͱ(ઈରnilʹͳΒͳ͍ ͱ͍͏ࣄ)͕อূͰ͖Δ߹ͷΈ͍·͠ΐ͏
ςΩετ ࣮ࡍͷίʔυ // มͷ߹ var nilNumber: Int? = nil //
͜ͷΑ͏ʹॻ͚Δ var optionalNum: Optional<Int> = 10 //ม optionalNum ͷඌʹ!ϚʔΫΛ͚ͭͯΛऔΓग़͢ print("added: \(optionalNum! + 10)”) //͜ΕΫϥογϡʂ print("added: \(nilNumber! + 10)”)
ํ๏2. NIL COALESCING OPERATOR
ςΩετ NIL COALESCING OPERATOR? ▸ ͪ͜Βඇৗʹ͓खܰͳํ๏͔ͭ҆શ ▸ optionalͰఆٛ͞ΕͨมͷޙΖʹ ?? <defaultValue>
Λͬͭ͘ ͚Δ ▸ ?? ԋࢉࢠ͕͋ΕͦͷΛฦ͠ɺnilͰ͋Εࢦఆͨ͠ defaultValueΛฦ͢ ▸ defaultValue ͑͞༻ҙͰ͖Ε҆શ͔͓ͭखܰʹ Unwrap Ͱ͖Δ ▸ get or elseͱݺΕΔ͜ͱ͋Δ
ςΩετ ࣮ࡍͷίʔυ // มͷ߹ var nilNumber: Int? = nil //
͜ͷΑ͏ʹॻ͚Δ var optionalNum: Optional<Int> = 10 // ม optionalNum ͷޙΖʹ ?? ϚʔΫΛ͚ͭͯΛऔΓग़͢ // ม optionalNum ͕ nil ͩͬͨΒ 0 ʹͳΔ print("added: \((optionalNum ?? 0) + 10)”)
ํ๏3.OPTIONAL BINDING
ςΩετ OPTIONAL BINDING? ▸ ԋࢉࢠΛ͏ํ๏ʹൺΔͱίʔυྔ૿͑Δ͕ͱͯ҆શ ʹѻ͑Δ ▸ if let
guard let, switch Λͬͯ unwrap ͢Δํ๏ ▸ ͦΕͧΕܗҧ͏͕શͯ optional ͷதΛ৽͍͠ఆʹଋ റ(bind)͢Δ͜ͱͰunwrap͢Δ ▸ Ұ൪Α͘͏ํ๏͔
ςΩετ ࣮ࡍͷίʔυ * ͘ͳΔͷͰXcodeͰ