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
130
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
82
Mobile Programming Protocol
yuichirokato
0
86
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
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
170
Core Audio tapを使ったリアルタイム音声処理のお話
yuta0306
0
140
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
150
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
210
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
180
CursorによるPMO業務の代替 / Automating PMO Tasks with Cursor
motoyoshi_kakaku
1
550
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
140
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
350
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
210
OpenHands🤲にContributeしてみた
kotauchisunsun
1
490
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
360
2025-06-26_Lightning_Talk_for_Lightning_Talks
_hashimo2
2
110
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
For a Future-Friendly Web
brad_frost
179
9.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Docker and Python
trallard
44
3.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
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Ͱ