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
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
320
App Clip - in a nutshell
yuichirokato
0
370
巨大な機能を VIPER + MicroViewController でいい感じに実装した話
yuichirokato
1
830
Mobile Programming Protocol Extension
yuichirokato
0
91
Mobile Programming Protocol
yuichirokato
0
98
Mobile Programming enum
yuichirokato
0
180
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
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
1.9k
「Blue Team Labs Online」入門 - みんなで挑むログ解析バトル
v_avenger
0
120
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1k
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
1k
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
260
JAWS DAYS 2026 CDP道場 事前説明会 / JAWS DAYS 2026 CDP Dojo briefing document
naospon
0
200
楽しく学ぼう!ネットワーク入門
shotashiratori
0
300
Claude Codeが爆速進化してプラグイン追従がつらいので半自動化した話 ver.2
rfdnxbro
0
440
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
100
開発組織の課題解決を加速するための権限委譲 -する側、される側としての向き合い方-
daitasu
5
310
EMからICへ、二周目人材としてAI全振りのプロダクト開発で見つけた武器
yug1224
5
480
聲の形にみるアクセシビリティ
tomokusaba
0
150
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Deep Space Network (abreviated)
tonyrice
0
86
How to Talk to Developers About Accessibility
jct
2
150
Tell your own story through comics
letsgokoyo
1
830
Facilitating Awesome Meetings
lara
57
6.8k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
150
How STYLIGHT went responsive
nonsquared
100
6k
Amusing Abliteration
ianozsvald
0
120
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
How to build a perfect <img>
jonoalderson
1
5.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
280
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
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Ͱ