SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
自己紹介
• @mo_to_44
• 株式会社ネクストで  HOME Sという

不動産検索アプリのiOSエンジニアをやっています
個人でもアプリ作ってます
  リボカメ - Revolver Camera
• リボルバーを模したUI
• フィルターをリアルタイムで
切り替え、確認できる
• Apple Watch対応
swift-evolution
https://github.com/apple/swift-evolution
Swift 3.0 proposal
• https://github.com/apple/swift-evolution/tree/
master/proposals から見ることができる
• 0004 と 0007 が気になった
0004: Remove the ++ and -- operators
Status: Accepted
0007: Remove C-style for-loops with
conditions and incrementers
Status: Under review 

(December 7, 2015 -- December 10, 2015)
Today
0007: Remove C-style for-loops with
conditions and incrementers
Status: Accepted
と、いうことで
こんなんが書けなくなる😱
困りそうなこと
あんまりない😜
for-in, forEach, map, filter よりどりみどり
Swift Advent Calendar 2015 2日目にまとめました
http://qiita.com/mo_to_44/items/cf83b22cb34921580a52
ちょっと困りそうなこと
• 配列内の要素のindexを取得したい
• indexが奇数の要素だけ取得したい
などなど
などなど、indexによってデータを取得、更新したり、
indexが配列を操作する際に重要な場合
indexが奇数の要素だけ取得
1. 空の配列 newArray を用意
2. for-inで各要素のindexを取得
3. indexが奇数の要素を newArray に追加
長っ
こんな時に
enumerateが使える
enumerate
• SequenceType Protocolに定義されている
• indexと要素のペア(タプル)の配列を取得するこ
とができる
indexが奇数の要素だけ取得

enumerate使用版
1. 空の配列 newArray を用意
2. enumerateを使用し、indexと要素のタ
プルの配列のfor-inを回す
3. indexが奇数の要素を newArray に追加
まだちょっと長い
indexが奇数の要素だけ取得

enumerate使って1行に
1. enumerateを使用し、indexが奇数のタ
プルをfilterで絞り込み
2. mapで要素のみを取り出す
(index, element)
$0.0 $0.1
タプルの要素へのアクセス
indexが奇数の要素だけ取得

enumerate使って1行に
1. enumerateを使用し、indexが奇数のタ
プルをfilterで絞り込み
2. mapで要素のみを取り出す
シンプル 👍
まとめ
enumerate
• SequenceTypeのExtensionで定義されている
• index と 要素のペア(タプル)の配列を取得できる
Swift 3.0
• ++ と -- がなくなる
• C言語スタイルのfor文がなくなる
Swift 3.0に向けて
• C言語スタイルのfor文ではなく、enumerateを積極
的に使っていく
• 同様に ++ や -- も使わないようにする
• swift-evolution/proposal に目を通して、なくなる
かもしれない文法はなるべく使わないようにする
おわり

Mais conteúdo relacionado

Destaque

SwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分けSwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分けKazunobu Tasaka
 
Applicative Functors in Swift
Applicative Functors in SwiftApplicative Functors in Swift
Applicative Functors in SwiftKazuhiro Sakamoto
 
Type safety WCSession
Type safety WCSessionType safety WCSession
Type safety WCSessionMotoki Narita
 
Objective-CからSwiftへの移行講座
Objective-CからSwiftへの移行講座Objective-CからSwiftへの移行講座
Objective-CからSwiftへの移行講座teencoders
 
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日Yoji Kiyota
 
学際領域としての不動産の研究を活性化させるために
学際領域としての不動産の研究を活性化させるために学際領域としての不動産の研究を活性化させるために
学際領域としての不動産の研究を活性化させるためにYoji Kiyota
 
Internet Explorer 11 の F12 開発者ツール
Internet Explorer 11 の F12 開発者ツールInternet Explorer 11 の F12 開発者ツール
Internet Explorer 11 の F12 開発者ツールYoshihisa Ozaki
 
エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発Yoshiyuki Ueda
 
Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発studioshin
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方Kimikazu Kato
 
スクラム開発について
スクラム開発についてスクラム開発について
スクラム開発についてAkio Terayama
 
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24Shinichi Nakagawa
 
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~Akira Ikeda
 
テクニカルクリエイターの憂鬱
テクニカルクリエイターの憂鬱テクニカルクリエイターの憂鬱
テクニカルクリエイターの憂鬱Keisuke Imura
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Yoshito Tabuchi
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付きMayumi Narisawa
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjpcocodrips
 
俺も エクストリームプログラミング入門
俺も エクストリームプログラミング入門俺も エクストリームプログラミング入門
俺も エクストリームプログラミング入門Fumihiko Kinoshita
 
DMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメントDMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメントKent Ishizawa
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 

Destaque (20)

SwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分けSwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分け
 
Applicative Functors in Swift
Applicative Functors in SwiftApplicative Functors in Swift
Applicative Functors in Swift
 
Type safety WCSession
Type safety WCSessionType safety WCSession
Type safety WCSession
 
Objective-CからSwiftへの移行講座
Objective-CからSwiftへの移行講座Objective-CからSwiftへの移行講座
Objective-CからSwiftへの移行講座
 
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
 
学際領域としての不動産の研究を活性化させるために
学際領域としての不動産の研究を活性化させるために学際領域としての不動産の研究を活性化させるために
学際領域としての不動産の研究を活性化させるために
 
Internet Explorer 11 の F12 開発者ツール
Internet Explorer 11 の F12 開発者ツールInternet Explorer 11 の F12 開発者ツール
Internet Explorer 11 の F12 開発者ツール
 
エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発
 
Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方
 
スクラム開発について
スクラム開発についてスクラム開発について
スクラム開発について
 
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
 
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
 
テクニカルクリエイターの憂鬱
テクニカルクリエイターの憂鬱テクニカルクリエイターの憂鬱
テクニカルクリエイターの憂鬱
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
俺も エクストリームプログラミング入門
俺も エクストリームプログラミング入門俺も エクストリームプログラミング入門
俺も エクストリームプログラミング入門
 
DMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメントDMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメント
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 

Semelhante a Swift3.0に向けて enumerateを使い始めよう

Nullabilityについて
NullabilityについてNullabilityについて
Nullabilityについてishikawa akira
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Tomoki Hasegawa
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)y_uuki
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことShuichi Tsutsumi
 
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門Shumpei Shiraishi
 
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C codeHow to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C codeChiharu Nameki
 
pythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリpythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリKazufumi Ohkawa
 
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swaggerFun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swaggerAnzaiKumiko
 
こだわりのkintone
こだわりのkintoneこだわりのkintone
こだわりのkintoneYusuke Amano
 
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったことapuruni
 
あじゅーるのつかいかた:WebAPI+Azure->UWP
あじゅーるのつかいかた:WebAPI+Azure->UWPあじゅーるのつかいかた:WebAPI+Azure->UWP
あじゅーるのつかいかた:WebAPI+Azure->UWPc-mitsuba
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略Hiroshi Maekawa
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略GuildWorks
 
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccampクラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccampMasahiro NAKAYAMA
 
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜Kosuke Ogawa
 

Semelhante a Swift3.0に向けて enumerateを使い始めよう (20)

Nullabilityについて
NullabilityについてNullabilityについて
Nullabilityについて
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
 
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
 
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C codeHow to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
 
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
 
pythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリpythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリ
 
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swaggerFun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swagger
 
OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 
こだわりのkintone
こだわりのkintoneこだわりのkintone
こだわりのkintone
 
Klabの梅雨対策
Klabの梅雨対策Klabの梅雨対策
Klabの梅雨対策
 
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
 
あじゅーるのつかいかた:WebAPI+Azure->UWP
あじゅーるのつかいかた:WebAPI+Azure->UWPあじゅーるのつかいかた:WebAPI+Azure->UWP
あじゅーるのつかいかた:WebAPI+Azure->UWP
 
Openshift 20191216
Openshift 20191216Openshift 20191216
Openshift 20191216
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
 
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccampクラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
 
Twitter API
Twitter APITwitter API
Twitter API
 
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
 

Mais de Motoki Narita

NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするNullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするMotoki Narita
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動Motoki Narita
 
Swift bondさわってみた
Swift bondさわってみたSwift bondさわってみた
Swift bondさわってみたMotoki Narita
 
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話Motoki Narita
 
watchOS1 to watchOS2
watchOS1 to watchOS2watchOS1 to watchOS2
watchOS1 to watchOS2Motoki Narita
 
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストOptionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストMotoki Narita
 

Mais de Motoki Narita (11)

NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするNullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動
 
About Swift-Clean
About Swift-CleanAbout Swift-Clean
About Swift-Clean
 
Swift bondさわってみた
Swift bondさわってみたSwift bondさわってみた
Swift bondさわってみた
 
watchOS2 tips
watchOS2 tipswatchOS2 tips
watchOS2 tips
 
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話
 
Xcode tips
Xcode tipsXcode tips
Xcode tips
 
watchOS1 to watchOS2
watchOS1 to watchOS2watchOS1 to watchOS2
watchOS1 to watchOS2
 
Complication
ComplicationComplication
Complication
 
Watch connectivity
Watch connectivityWatch connectivity
Watch connectivity
 
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストOptionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクスト
 

Swift3.0に向けて enumerateを使い始めよう