Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yuichi Adachi
2,814 views
Swiftの新機能 Optional
2014/6/6 @ M3 tech talk
Technology
◦
Entertainment & Humor
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 30
2
/ 30
3
/ 30
4
/ 30
5
/ 30
6
/ 30
7
/ 30
8
/ 30
9
/ 30
10
/ 30
11
/ 30
12
/ 30
13
/ 30
14
/ 30
15
/ 30
16
/ 30
17
/ 30
18
/ 30
19
/ 30
20
/ 30
21
/ 30
22
/ 30
23
/ 30
24
/ 30
25
/ 30
26
/ 30
27
/ 30
28
/ 30
29
/ 30
30
/ 30
More Related Content
PDF
続・ゲンバのSwift
by
Yuichi Adachi
PDF
Dart言語の進化状況
by
cch-robo
PDF
Swiftのアプリ開発でハマったこと
by
yohei sugigami
KEY
OCamlの多相Variant紹介 #fpstudy
by
kyon mm
PDF
Swiftの概要をザックリと
by
Keisuke Tanaka
PDF
[iOS8] 新たな線形代数ライブラリ Linear Algebra
by
Yuichi Adachi
PDF
20141128 iOSチーム勉強会 My Sweet Swift
by
necocen
PDF
Swift入門おさらい
by
GMO TECH 株式会社
続・ゲンバのSwift
by
Yuichi Adachi
Dart言語の進化状況
by
cch-robo
Swiftのアプリ開発でハマったこと
by
yohei sugigami
OCamlの多相Variant紹介 #fpstudy
by
kyon mm
Swiftの概要をザックリと
by
Keisuke Tanaka
[iOS8] 新たな線形代数ライブラリ Linear Algebra
by
Yuichi Adachi
20141128 iOSチーム勉強会 My Sweet Swift
by
necocen
Swift入門おさらい
by
GMO TECH 株式会社
Similar to Swiftの新機能 Optional
PDF
Swift らしい表現を目指そう #eventdots
by
Tomohiro Kumagai
PDF
4年前のカメラアプリをSwiftで書きなおした
by
Hiromichi Yamada
PDF
NS Prefix - そこから見渡す Swift 3 の景色 #startup_mobile
by
Tomohiro Kumagai
PDF
Swift本ができるまで
by
yuki0211s
PDF
LITメンター研修_Android0212
by
Ryo Yamamoto
PDF
Swift を振り返ってみよう #cswift
by
Tomohiro Kumagai
PDF
SwiftのOptionalを理解する
by
幸雄 村上
PPTX
SwiftのOptionalを理解する
by
幸雄 村上
PDF
Swift勉強会
by
Nagamine Hiromasa
PDF
Swift 2.0 で変わったところ「前編」 #cswift
by
Tomohiro Kumagai
PDF
Swift事情2014夏 ~ Swift入門 beta6対応
by
Tomoki Hasegawa
PDF
Study Swift
by
Akihiro Urushihara
PDF
脱swift初心者するための2つのきっかけ
by
Daiki Mogmet Ito
PPTX
Deep dive into oss written in swift
by
Yuki Asai
PPTX
Deep dive into oss written in swift
by
Yuki Asai
PDF
Wolcome to swift
by
Kyohei Ito
PDF
Swiftで、かなり微妙な型クラス
by
Nobukazu Hanada
PDF
Swift2.x を Scala からみる
by
Yuichi Adachi
PDF
Swiftおさらい
by
Hidenori Takeshita
PDF
iPhone, iPad アプリ開発勉強会#3
by
Hiroe Orz
Swift らしい表現を目指そう #eventdots
by
Tomohiro Kumagai
4年前のカメラアプリをSwiftで書きなおした
by
Hiromichi Yamada
NS Prefix - そこから見渡す Swift 3 の景色 #startup_mobile
by
Tomohiro Kumagai
Swift本ができるまで
by
yuki0211s
LITメンター研修_Android0212
by
Ryo Yamamoto
Swift を振り返ってみよう #cswift
by
Tomohiro Kumagai
SwiftのOptionalを理解する
by
幸雄 村上
SwiftのOptionalを理解する
by
幸雄 村上
Swift勉強会
by
Nagamine Hiromasa
Swift 2.0 で変わったところ「前編」 #cswift
by
Tomohiro Kumagai
Swift事情2014夏 ~ Swift入門 beta6対応
by
Tomoki Hasegawa
Study Swift
by
Akihiro Urushihara
脱swift初心者するための2つのきっかけ
by
Daiki Mogmet Ito
Deep dive into oss written in swift
by
Yuki Asai
Deep dive into oss written in swift
by
Yuki Asai
Wolcome to swift
by
Kyohei Ito
Swiftで、かなり微妙な型クラス
by
Nobukazu Hanada
Swift2.x を Scala からみる
by
Yuichi Adachi
Swiftおさらい
by
Hidenori Takeshita
iPhone, iPad アプリ開発勉強会#3
by
Hiroe Orz
More from Yuichi Adachi
PDF
VIPER アーキテクチャによる iOS アプリの設計
by
Yuichi Adachi
KEY
Applicative functor
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part14
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part28
by
Yuichi Adachi
PDF
Swift2 の新機能 Protocol Extension
by
Yuichi Adachi
PDF
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
PDF
ゲンバのSwift
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part15
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part19
by
Yuichi Adachi
VIPER アーキテクチャによる iOS アプリの設計
by
Yuichi Adachi
Applicative functor
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part14
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part28
by
Yuichi Adachi
Swift2 の新機能 Protocol Extension
by
Yuichi Adachi
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
ゲンバのSwift
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part15
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part19
by
Yuichi Adachi
Recently uploaded
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PDF
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PDF
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
PDF
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PPTX
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
PPTX
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
PDF
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
PDF
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
PDF
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
Swiftの新機能 Optional
1.
Copylight © Classmethod,
Inc. Swiftの新機能! Optional Classmethod, Inc! ! 安達 勇一 1
2.
Copylight © Classmethod,
Inc. プログラミング言語 Swift ・AppleがWWDC2014で発表! ・Xcode6-betaで利用可能! ・ライセンス開発者同士の議論はNDAから外れる模様! ・多くの言語のいいとこ取り! 2
3.
Copylight © Classmethod,
Inc. 新しい概念 Optional var numberString: String? = “1111” //{Some "1111"} ! if let number = numberString?.toInt() { (number * 2).description // "2222" } else { "failed" } 3
4.
Copylight © Classmethod,
Inc. 新しい概念 Optional var assumedNum: Int! = ”111”.toInt() ! if assumedNum { print(assumedNum) // 111 } 4
5.
Copylight © Classmethod,
Inc. 5 ?
6.
Copylight © Classmethod,
Inc. ?のルール 6 ・T?でenum Optional<T> のシンタックスシュガー! ・T型、T?型の双方が代入可能! ・値が存在しないかもしれないコンテキストが! 型に含まれている(Haskell :Maybeモナド)!
7.
Copylight © Classmethod,
Inc. ?のルール ! enum Optional<T> 7 enum Optional<T> { case None //値が存在しない場合 case Some(T) //値が存在する場合 }
8.
Copylight © Classmethod,
Inc. ?のルール ! 代入! ! ! ! ! 8 var str: String? = "some string" var temp = str str = “string" //{Some “string"} str = temp //{Some "some string"}
9.
Copylight © Classmethod,
Inc. ?のルール 9 ・メソッドチェーンの際に?を挟むことで! None(= nil)の時は以降のメソッドが走らない! Some(T)の時はTに対して次のメソッドを適用する! !
10.
Copylight © Classmethod,
Inc. ?のルール ! メソッドチェーン! ! ! ! ! 10 var numStr: String? = "123" var notNumStr: String? = "1s3" var newNumStr: String? = numStr?.toInt()?.description //{Some “123"} var newNotNumStr: String? = notNumStr?.toInt()?.description //nil
11.
Copylight © Classmethod,
Inc. 11 !
12.
Copylight © Classmethod,
Inc. !のルール 12 ・T!でstruct ImplicitlyUnwrappedOptional<T>! のシンタックスシュガー! ・T型、T?型の双方を代入可能! ・T?の型に!を適用すると! T?がSome(T)ならばTを返す! NoneならばRuntime Errorが起きる! ・Tに!を適用するとコンパイルエラー
13.
Copylight © Classmethod,
Inc. !のルール ! 代入! ! ! ! ! 13 var num: Int! = 1111 // 1111 var notNumStr: String? = “1s3" num = "128".toInt() // 128 num = notNumStr?.toInt() // nil
14.
Copylight © Classmethod,
Inc. !のルール ! T?型に!を適用する! ! ! ! ! T型に!を適用する 14 var notNumStr: String? = "1s3" var notNum: Int? = notNumStr?.toInt() notNumStr! // "1s3" var notInt: Int = notNum! // runtime error var integer = 17 17! // !の適用先が違うとコンパイラに怒られる
15.
Copylight © Classmethod,
Inc. !のルール 15 ! ・型そのものと、値を取得するときの返り値が異なる! Tを代入した時はTを返す! T?を代入した時、その中身がSome(T)ならばTを返す! Noneならばnil(=T?)を返す! ・この仕組が暗黙的アンラップ型と呼ばれる所以
16.
Copylight © Classmethod,
Inc. !のルール ! 代入! ! ! ! ! 16 var num: Int! = 1111 // Intを代入してIntを返す var notNumStr: String? = “1s3" num = "128".toInt() // Int?を代入してIntを返す num = notNumStr?.toInt() // Int?を代入してnilを返す
17.
Copylight © Classmethod,
Inc. !のルール 17 ! ・T!で宣言しておくとnilでないことがわかっている時に! 何回もT?に対して中身を表示する際に!を呼ばずに済む。! ・T!に入ったnilに対してTのメソッドを呼んでも! ランタイムエラーを起こす。! -> if文等で中身が入っていることを確かめてから!を使う。
18.
Copylight © Classmethod,
Inc. !のルール ! if文で中身があることを確認! ! ! 18 var num: Int? = “123”.toInt() var notNum: Int! = “1s3”.toInt() if num { print(num! + 10) } if notNum { print(notNum + 10) }
19.
Copylight © Classmethod,
Inc. 19 T型 T?型 T!型 常に代入可能 常に代入不可 nil以外代入可
20.
Copylight © Classmethod,
Inc. 20 T型 T?型 T!型 常に代入可能 常に代入不可 nil以外代入可 !を適用
21.
Copylight © Classmethod,
Inc. メソッドチェーン再考 21 var numStr: String? = "123" var notNumStr: String? = "1s3" var newNumStr: String? = numStr?.toInt()?.description //{Some “123"} var newNotNumStr: String? = notNumStr?.toInt()?.description //nil ・numStrはString? ! ・toInt()をString -> Int?型の関数とみなす! ・.?はこの時 String? -> (String -> Int?) -> Int?型! の中置関数とみなせる。
22.
Copylight © Classmethod,
Inc. メソッドチェーン再考 22 func toInteger (string: String) -> Int? { return string.toInt() } ・このstruct外の関数に関しては! Stringからのメソッドチェーンが適用できない
23.
Copylight © Classmethod,
Inc. 23
24.
Copylight © Classmethod,
Inc. メソッドチェーン再考 24 ・.?は他の場合でもT? -> (T -> U?) -> U?型! の中置関数とみなせる。!
25.
Copylight © Classmethod,
Inc. メソッドチェーン再考 25 ・.?は他の場合でもT? -> (T -> U?) -> U?型! の中置関数とみなせる。! ・enum Optional<T> をHaskellのMaybe T とみなして! モナドとして扱えないか?
26.
Copylight © Classmethod,
Inc. メソッドチェーン再考 26 ・.?は他の場合でもT? -> (T -> U?) -> U?型! の中置関数とみなせる。! ・enum Optional<T> をHaskellのMaybe T とみなして! モナドとして扱えないか?! ・Maybe モナドのバインド(>>=)を実装できれば! Optionalのコンテキストを保ったまま! 関数オブジェクトに次々に適用できる
27.
Copylight © Classmethod,
Inc. Optional で Haskellの >>= 27 operator infix >>= { associativity left } ! func >>=<A, B> (maybe: Optional<A>, acts: A -> Optional<B>) -> Optional<B> { switch maybe { case .None: return nil case let .Some(content): return acts(content) } }
28.
Copylight © Classmethod,
Inc. func toInt8 (int: Int) -> Int8? { switch int { case Int(Int8.min)...Int(Int8.max): return Optional.Some(Int8(int)) default: return nil } } ! var innerString: String? = "127" var outerString: String? = "128" innerString >>= toInteger >>= toInt8 // Some 127 outerString >>= toInteger >>= toInt8 // nil 28
29.
Copylight © Classmethod,
Inc. 29
Download