Enviar pesquisa
Carregar
Enumerate
•
2 gostaram
•
4,363 visualizações
Motoki Narita
Seguir
potatotips #24での発表内容です http://connpass.com/event/23065/
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 35
Baixar agora
Baixar para ler offline
Recomendados
Swift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めよう
Motoki Narita
What's new Swift3
What's new Swift3
toyship
シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!
Kanako Kobayashi
Source kittenについて
Source kittenについて
佐藤 俊太郎
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
Yoshiaki Yoshida
Rails環境に最適なVue.js構成を探る
Rails環境に最適なVue.js構成を探る
虎の穴 開発室
iOS豆知識ver0.0.5
iOS豆知識ver0.0.5
ppengotsu Name
Framework code reading
Framework code reading
shinnosuke kugimiya
Recomendados
Swift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めよう
Motoki Narita
What's new Swift3
What's new Swift3
toyship
シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!
Kanako Kobayashi
Source kittenについて
Source kittenについて
佐藤 俊太郎
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
Yoshiaki Yoshida
Rails環境に最適なVue.js構成を探る
Rails環境に最適なVue.js構成を探る
虎の穴 開発室
iOS豆知識ver0.0.5
iOS豆知識ver0.0.5
ppengotsu Name
Framework code reading
Framework code reading
shinnosuke kugimiya
TestFlightみたいなのを自作する
TestFlightみたいなのを自作する
Tomoki Hasegawa
3D touch for iOS
3D touch for iOS
toyship
To learn Interpolator
To learn Interpolator
Mima Yuki
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
Enhancements with 3D Touch
Enhancements with 3D Touch
Satoshi Ohki
tvOSでWebSocketを使う
tvOSでWebSocketを使う
Tomoki Hasegawa
UIKit Sound
UIKit Sound
cocominap
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
yoku0825
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
akatsuki174
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
Twitter API
Twitter API
Hiroshi Tsujimura
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Chihiro Adachi
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
Chiharu Nameki
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
mecha mogera
Openshift 20191121
Openshift 20191121
Yasushi Osonoi
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Tomoya Hayakawa
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門
Hironori Sekine
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Masahiro NAKAYAMA
Nullabilityについて
Nullabilityについて
ishikawa akira
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Hikaru Takemura
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swagger
AnzaiKumiko
Mais conteúdo relacionado
Destaque
TestFlightみたいなのを自作する
TestFlightみたいなのを自作する
Tomoki Hasegawa
3D touch for iOS
3D touch for iOS
toyship
To learn Interpolator
To learn Interpolator
Mima Yuki
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
Enhancements with 3D Touch
Enhancements with 3D Touch
Satoshi Ohki
tvOSでWebSocketを使う
tvOSでWebSocketを使う
Tomoki Hasegawa
UIKit Sound
UIKit Sound
cocominap
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
yoku0825
Destaque
(8)
TestFlightみたいなのを自作する
TestFlightみたいなのを自作する
3D touch for iOS
3D touch for iOS
To learn Interpolator
To learn Interpolator
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Enhancements with 3D Touch
Enhancements with 3D Touch
tvOSでWebSocketを使う
tvOSでWebSocketを使う
UIKit Sound
UIKit Sound
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
Semelhante a Enumerate
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
akatsuki174
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
Twitter API
Twitter API
Hiroshi Tsujimura
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Chihiro Adachi
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
Chiharu Nameki
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
mecha mogera
Openshift 20191121
Openshift 20191121
Yasushi Osonoi
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Tomoya Hayakawa
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門
Hironori Sekine
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Masahiro NAKAYAMA
Nullabilityについて
Nullabilityについて
ishikawa akira
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Hikaru Takemura
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swagger
AnzaiKumiko
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
Osoljp201210 oi swift
Osoljp201210 oi swift
Noriyasu Sakaue
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
クラウドセキュリティ基礎
クラウドセキュリティ基礎
Masahiro NAKAYAMA
Appcelerator TitaniumでSocket.io (1.x)
Appcelerator TitaniumでSocket.io (1.x)
Toshiro Yagi
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
Kazumi IWANAGA
Semelhante a Enumerate
(20)
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Twitter API
Twitter API
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
Openshift 20191121
Openshift 20191121
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Nullabilityについて
Nullabilityについて
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swagger
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Osoljp201210 oi swift
Osoljp201210 oi swift
Laravel5を使って開発してみた
Laravel5を使って開発してみた
クラウドセキュリティ基礎
クラウドセキュリティ基礎
Appcelerator TitaniumでSocket.io (1.x)
Appcelerator TitaniumでSocket.io (1.x)
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
Mais de Motoki Narita
Type safety WCSession
Type safety WCSession
Motoki Narita
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
Motoki Narita
できることから始めるOss活動
できることから始めるOss活動
Motoki Narita
About Swift-Clean
About Swift-Clean
Motoki Narita
Swift bondさわってみた
Swift bondさわってみた
Motoki Narita
watchOS2 tips
watchOS2 tips
Motoki Narita
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話
Motoki Narita
Xcode tips
Xcode tips
Motoki Narita
watchOS1 to watchOS2
watchOS1 to watchOS2
Motoki Narita
Complication
Complication
Motoki Narita
Watch connectivity
Watch connectivity
Motoki Narita
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクスト
Motoki Narita
Mais de Motoki Narita
(12)
Type safety WCSession
Type safety WCSession
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
できることから始めるOss活動
できることから始めるOss活動
About Swift-Clean
About Swift-Clean
Swift bondさわってみた
Swift bondさわってみた
watchOS2 tips
watchOS2 tips
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話
Xcode tips
Xcode tips
watchOS1 to watchOS2
watchOS1 to watchOS2
Complication
Complication
Watch connectivity
Watch connectivity
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクスト
Último
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
Último
(8)
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Enumerate
1.
2.
自己紹介 • @mo_to_44 • 株式会社ネクストで HOME
Sという 不動産検索アプリのiOSエンジニアをやっています
3.
個人でもアプリ作ってます リボカメ -
Revolver Camera • リボルバーを模したUI • フィルターをリアルタイムで 切り替え、確認できる • Apple Watch対応
4.
shibuya.swift #2 http://www.slideshare.net/motokinarita7/swift30-enumerate
5.
swift-evolution https://github.com/apple/swift-evolution
6.
Swift 3.0 で導入されることが 議論されている
7.
0004: Remove the
++ and -- operators 🎉 Status: Accepted
8.
0007: Remove C-style
for-loops with conditions and incrementers 🎉 Status: Accepted
9.
どうするのか?
10.
enumerate • SequenceType Protocolに定義されている •
indexと要素のペア(タプル)の配列を取得するこ とができる
11.
shibuya.swift #2 http://www.slideshare.net/motokinarita7/swift30-enumerate Swift 3.0に向けて •
C言語スタイルのfor文ではなく、enumerateを積極 的に使っていく • 同様に ++ や -- も使わないようにする • swift-evolution/proposal に目を通して、なくなる かもしれない文法はなるべく使わないようにする
12.
enumerateは どう実装されているのか?
13.
ソースを見てみる
14.
enumerateは /stdlib/public/core/SequenceAlgorithms.swift.gyb にSequenceTypeのProtocol Extensionで定義 https://github.com/apple/swift/blob/master/stdlib/public/core/SequenceAlgorithms.swift.gyb
15.
enumerateは /stdlib/public/core/SequenceAlgorithms.swift.gyb にSequenceTypeのProtocol Extensionで定義 https://github.com/apple/swift/blob/master/stdlib/public/core/SequenceAlgorithms.swift.gyb
16.
ちょいちょい出てくる.gyb • Generate Your
Boilerplateの略 と、/blob/master/utils/gyb.py に記載が ある • Swiftのプロジェクトで使われている テンプレート形式 reference: Optionalな文字列同士を良い感じに結合する(ついでにreduceとflatMap の実装を覗いてみる) http://qiita.com/kazu0620/items/f2a6272c6b8b7bcbaa42
17.
SequenceTypeのProtocol Extension /stdlib/public/core/SequenceAlgorithms.swift.gyb
18.
戻り値はEnumerateSequence型 /stdlib/public/core/SequenceAlgorithms.swift.gyb
19.
@warn_unused_resultでこの関数を使っていて 戻り値が使われていない場合に警告を出す /stdlib/public/core/SequenceAlgorithms.swift.gyb
20.
戻り値はEnumerateSequence型 /stdlib/public/core/SequenceAlgorithms.swift.gyb
21.
EnumerateSequenceは /stdlib/public/core/Algorithm.swift に定義されている
22.
EnumerateSequenceはSequenceTypeプロトコル を採用したstruct /stdlib/public/core/Algorithm.swift
23.
SequenceTypeプロトコル • SequenceTypeはgenerateメソッドを実装する必要 がある • そのgenerateメソッドの戻り値はGeneratorType
24.
EnumerateSequenceのgenerateの戻り値は EnumerateGenerator型 /stdlib/public/core/Algorithm.swift
25.
EnumerateGeneratorはEnumerateSequenceと同じく /stdlib/public/core/Algorithm.swift に定義されている
26.
GeneratorTypeプロトコル • for-in文で利用できるようにするためには、さきほ どのSequenceTypeとGeneratorTypeを実装する必 要がある(とのこと) • GeneratorTypeは
next メソッドを実装する必要が ある • この next メソッドの戻り値がfor-inの中で渡ってく る値
27.
/stdlib/public/core/Algorithm.swift EnumerateGeneratorのnextメソッドでタプル を返している!!
28.
/stdlib/public/core/Algorithm.swift EnumerateGenerator(struct)はbaseとcount をプロパティとして保持している
29.
/stdlib/public/core/Algorithm.swift 初期化時、EnumerateGeneratorの countプロパティは0
30.
/stdlib/public/core/Algorithm.swift for-inなどでnextが呼ばれるたびにEnumerateGenerator のcountプロパティをインクリメント
31.
/stdlib/public/core/Algorithm.swift ++ はSwift3.0でなくなるので、 そのうち実装が修正されるはず
32.
まとめ
33.
まとめ • enumerateはEnumerateSequenceと EnumerateGeneratorで実装されている • ++
を使用しているので、Swift3.0のリリース時に は修正されているはず
34.
ソース読んでみた感想 • Swiftのオープンソース化で気になったことはソー スを見れるようになったのは便利 • 分からないことがどんどん出てきてかなりビビる •
勉強不足...
35.
おわり
Baixar agora