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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yuichiro_takahashi
December 19, 2018
Technology
150
0
Share
Mobile Programming Optional
モバイルプログラミングの授業で使うスライドです
yuichiro_takahashi
December 19, 2018
More Decks by yuichiro_takahashi
See All by yuichiro_takahashi
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
570
App Clip - in a nutshell
yuichirokato
0
380
巨大な機能を VIPER + MicroViewController でいい感じに実装した話
yuichirokato
1
840
Mobile Programming Protocol Extension
yuichirokato
0
96
Mobile Programming Protocol
yuichirokato
0
100
Mobile Programming enum
yuichirokato
0
190
Mobile Programming Struct
yuichirokato
0
140
Mobile Programming Initializer Beta
yuichirokato
0
140
Mobile Programming Inheritance
yuichirokato
0
170
Other Decks in Technology
See All in Technology
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
120
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
640
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
1.3k
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
150
20260528_生成AIを専属DSに_Howの次にすべきことを考える
doradora09
PRO
0
280
AI時代の私の技術インプットとアウトプット術
tonkotsuboy_com
15
8.1k
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
730
Kiro CLI v2.0.0がやってきた!
kentapapa
0
260
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
0
310
エンジニアは生成AIと どのように向き合うべきか? ことばの意味という観点から
verypluming
3
320
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
110
Featured
See All Featured
Leo the Paperboy
mayatellez
7
1.8k
Believing is Seeing
oripsolob
1
140
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
130
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
590
It's Worth the Effort
3n
188
29k
A Soul's Torment
seathinner
6
2.9k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
810
The Limits of Empathy - UXLibs8
cassininazir
1
340
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Navigating Weather and Climate Data
rabernat
0
210
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Ͱ