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
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
Dart言語の進化状況
by
cch-robo
KEY
OCamlの多相Variant紹介 #fpstudy
by
kyon mm
PDF
[iOS8] 新たな線形代数ライブラリ Linear Algebra
by
Yuichi Adachi
PDF
Swiftの概要をザックリと
by
Keisuke Tanaka
PDF
続・ゲンバのSwift
by
Yuichi Adachi
PDF
Swift入門おさらい
by
GMO TECH 株式会社
PDF
Swiftのアプリ開発でハマったこと
by
yohei sugigami
PDF
20141128 iOSチーム勉強会 My Sweet Swift
by
necocen
Dart言語の進化状況
by
cch-robo
OCamlの多相Variant紹介 #fpstudy
by
kyon mm
[iOS8] 新たな線形代数ライブラリ Linear Algebra
by
Yuichi Adachi
Swiftの概要をザックリと
by
Keisuke Tanaka
続・ゲンバのSwift
by
Yuichi Adachi
Swift入門おさらい
by
GMO TECH 株式会社
Swiftのアプリ開発でハマったこと
by
yohei sugigami
20141128 iOSチーム勉強会 My Sweet Swift
by
necocen
Similar to Swiftの新機能 Optional
PDF
Swiftおさらい
by
Hidenori Takeshita
PDF
Study Swift
by
Akihiro Urushihara
PDF
NS Prefix - そこから見渡す Swift 3 の景色 #startup_mobile
by
Tomohiro Kumagai
PDF
Wolcome to swift
by
Kyohei Ito
PDF
Swift らしい表現を目指そう #eventdots
by
Tomohiro Kumagai
PDF
4年前のカメラアプリをSwiftで書きなおした
by
Hiromichi Yamada
PDF
Swift勉強会
by
Nagamine Hiromasa
PDF
Swift事情2014夏 ~ Swift入門 beta6対応
by
Tomoki Hasegawa
PDF
Swift を振り返ってみよう #cswift
by
Tomohiro Kumagai
PDF
Swift本ができるまで
by
yuki0211s
PPTX
Deep dive into oss written in swift
by
Yuki Asai
PPTX
Deep dive into oss written in swift
by
Yuki Asai
PDF
LITメンター研修_Android0212
by
Ryo Yamamoto
PDF
脱swift初心者するための2つのきっかけ
by
Daiki Mogmet Ito
PDF
Swiftで、かなり微妙な型クラス
by
Nobukazu Hanada
PDF
Swift 2.0 で変わったところ「前編」 #cswift
by
Tomohiro Kumagai
PDF
iPhone, iPad アプリ開発勉強会#3
by
Hiroe Orz
PDF
SwiftのOptionalを理解する
by
幸雄 村上
PDF
Swift2.x を Scala からみる
by
Yuichi Adachi
PPTX
SwiftのOptionalを理解する
by
幸雄 村上
Swiftおさらい
by
Hidenori Takeshita
Study Swift
by
Akihiro Urushihara
NS Prefix - そこから見渡す Swift 3 の景色 #startup_mobile
by
Tomohiro Kumagai
Wolcome to swift
by
Kyohei Ito
Swift らしい表現を目指そう #eventdots
by
Tomohiro Kumagai
4年前のカメラアプリをSwiftで書きなおした
by
Hiromichi Yamada
Swift勉強会
by
Nagamine Hiromasa
Swift事情2014夏 ~ Swift入門 beta6対応
by
Tomoki Hasegawa
Swift を振り返ってみよう #cswift
by
Tomohiro Kumagai
Swift本ができるまで
by
yuki0211s
Deep dive into oss written in swift
by
Yuki Asai
Deep dive into oss written in swift
by
Yuki Asai
LITメンター研修_Android0212
by
Ryo Yamamoto
脱swift初心者するための2つのきっかけ
by
Daiki Mogmet Ito
Swiftで、かなり微妙な型クラス
by
Nobukazu Hanada
Swift 2.0 で変わったところ「前編」 #cswift
by
Tomohiro Kumagai
iPhone, iPad アプリ開発勉強会#3
by
Hiroe Orz
SwiftのOptionalを理解する
by
幸雄 村上
Swift2.x を Scala からみる
by
Yuichi Adachi
SwiftのOptionalを理解する
by
幸雄 村上
More from Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part28
by
Yuichi Adachi
PDF
Swift2 の新機能 Protocol Extension
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part19
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part15
by
Yuichi Adachi
PDF
ゲンバのSwift
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part14
by
Yuichi Adachi
PDF
VIPER アーキテクチャによる iOS アプリの設計
by
Yuichi Adachi
PDF
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
KEY
Applicative functor
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part28
by
Yuichi Adachi
Swift2 の新機能 Protocol Extension
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part19
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part15
by
Yuichi Adachi
ゲンバのSwift
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part14
by
Yuichi Adachi
VIPER アーキテクチャによる iOS アプリの設計
by
Yuichi Adachi
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
Applicative functor
by
Yuichi Adachi
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