Enviar pesquisa
Carregar
Study Swift
•
6 gostaram
•
3,777 visualizações
Akihiro Urushihara
Seguir
仲間内で Swift の勉強しよう、ってので作った資料 折角なので共有します。 時間がなく適当につくったものなので、 理解不足等あると思いますので、ご了承ください。
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 57
Baixar agora
Baixar para ler offline
Recomendados
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
NSNotification in Swift #cocoa_kansai
NSNotification in Swift #cocoa_kansai
Tomohiro Kumagai
Swift 構造体の時代 #yidev
Swift 構造体の時代 #yidev
Tomohiro Kumagai
プロトコル拡張の話? #WWDC21cafe
プロトコル拡張の話? #WWDC21cafe
Tomohiro Kumagai
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
Tomohiro Kumagai
Swift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswift
Tomohiro Kumagai
Recomendados
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
NSNotification in Swift #cocoa_kansai
NSNotification in Swift #cocoa_kansai
Tomohiro Kumagai
Swift 構造体の時代 #yidev
Swift 構造体の時代 #yidev
Tomohiro Kumagai
プロトコル拡張の話? #WWDC21cafe
プロトコル拡張の話? #WWDC21cafe
Tomohiro Kumagai
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
Tomohiro Kumagai
Swift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswift
Tomohiro Kumagai
Swift の可変値と不変値 #cocoa_kansai
Swift の可変値と不変値 #cocoa_kansai
Tomohiro Kumagai
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
jugemjugemjugem
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Kouji Matsui
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
TypeScript超入門
TypeScript超入門
Narami Kiyokura
Griffon10 in groovy_fx
Griffon10 in groovy_fx
kimukou_26 Kimukou
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Tomohiro Kumagai
TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
Async DeepDive basics
Async DeepDive basics
Kouji Matsui
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
async/await不要論
async/await不要論
bleis tift
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
Swift入門おさらい
Swift入門おさらい
GMO TECH 株式会社
Swift入門
Swift入門
聡 中川
Mais conteúdo relacionado
Mais procurados
Swift の可変値と不変値 #cocoa_kansai
Swift の可変値と不変値 #cocoa_kansai
Tomohiro Kumagai
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
jugemjugemjugem
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Kouji Matsui
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
TypeScript超入門
TypeScript超入門
Narami Kiyokura
Griffon10 in groovy_fx
Griffon10 in groovy_fx
kimukou_26 Kimukou
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Tomohiro Kumagai
TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
Async DeepDive basics
Async DeepDive basics
Kouji Matsui
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
async/await不要論
async/await不要論
bleis tift
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
Mais procurados
(20)
Swift の可変値と不変値 #cocoa_kansai
Swift の可変値と不変値 #cocoa_kansai
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
TypeScript超入門
TypeScript超入門
Griffon10 in groovy_fx
Griffon10 in groovy_fx
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
TypeScriptをオススメする理由
TypeScriptをオススメする理由
Async DeepDive basics
Async DeepDive basics
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
async/await不要論
async/await不要論
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Destaque
Swift入門おさらい
Swift入門おさらい
GMO TECH 株式会社
Swift入門
Swift入門
聡 中川
AnyObject – 自分が見落としていた、基本の話
AnyObject – 自分が見落としていた、基本の話
Tomohiro Kumagai
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
Kanako Kobayashi
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
KinkumaDesign
Swift勉強会
Swift勉強会
Nagamine Hiromasa
ほんわかSwift勉強資料
ほんわかSwift勉強資料
kouhei kawamata
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswift
Tomohiro Kumagai
Xcode bot
Xcode bot
toyship
スタートアップ勉強会
スタートアップ勉強会
Ken Haneda
Universal Link
Universal Link
toyship
Swift3 typecasting nested_type
Swift3 typecasting nested_type
Eunjoo Im
Notifications in iOS10
Notifications in iOS10
toyship
30代からのプライベートiOSデベロッパーのとしての軌跡
30代からのプライベートiOSデベロッパーのとしての軌跡
Fumiya Sakai
Open stack development in sicr2jp
Open stack development in sicr2jp
shintaro mizuno
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
Fumiya Sakai
みんなで Swift 復習会での談笑用スライド – in 札幌 1st′ #minna_de_swift
みんなで Swift 復習会での談笑用スライド – in 札幌 1st′ #minna_de_swift
Tomohiro Kumagai
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
Tomohiro Kumagai
NS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバ
Tomohiro Kumagai
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
Tomohiro Kumagai
Destaque
(20)
Swift入門おさらい
Swift入門おさらい
Swift入門
Swift入門
AnyObject – 自分が見落としていた、基本の話
AnyObject – 自分が見落としていた、基本の話
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
Swift勉強会
Swift勉強会
ほんわかSwift勉強資料
ほんわかSwift勉強資料
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswift
Xcode bot
Xcode bot
スタートアップ勉強会
スタートアップ勉強会
Universal Link
Universal Link
Swift3 typecasting nested_type
Swift3 typecasting nested_type
Notifications in iOS10
Notifications in iOS10
30代からのプライベートiOSデベロッパーのとしての軌跡
30代からのプライベートiOSデベロッパーのとしての軌跡
Open stack development in sicr2jp
Open stack development in sicr2jp
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
みんなで Swift 復習会での談笑用スライド – in 札幌 1st′ #minna_de_swift
みんなで Swift 復習会での談笑用スライド – in 札幌 1st′ #minna_de_swift
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
NS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバ
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
Semelhante a Study Swift
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
Tomoki Hasegawa
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
Hiramatsu Ryosuke
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)
Taketo Sano
リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__
Tomohiro Kumagai
OpenStack Object Storage; Overview
OpenStack Object Storage; Overview
irix_jp
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
yohei sugigami
20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140822 Swift 勉強会 vol.3 - はぢめての Swift
Mori Tetsuya
Swiftの実際ダメな所
Swiftの実際ダメな所
S_Shimotori
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Tomoya Hayakawa
Nullabilityについて
Nullabilityについて
ishikawa akira
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
Yoshiki Shibukawa
Swift入門
Swift入門
エンジニア勉強会 エスキュービズム
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
Obj-CをSwiftにリプレースするお話
Obj-CをSwiftにリプレースするお話
Hitoshi Saito
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望)
Taketo Sano
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
Chiharu Nameki
Semelhante a Study Swift
(20)
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)
リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__
OpenStack Object Storage; Overview
OpenStack Object Storage; Overview
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140822 Swift 勉強会 vol.3 - はぢめての Swift
Swiftの実際ダメな所
Swiftの実際ダメな所
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Nullabilityについて
Nullabilityについて
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
Swift入門
Swift入門
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Obj-CをSwiftにリプレースするお話
Obj-CをSwiftにリプレースするお話
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望)
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
Spring I/O 2015 報告
Spring I/O 2015 報告
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
Study Swift
1.
Study Swift 2014/7/9 Urushihara Akihiro @U_Akihir0
2.
IntroductionIntroduction ● Swift のここがすごい! ●
AltJS のような次世代的な言語設計 ● LLVM-Backend による高速な動作の実現 ● 過去の資産 Objective-C との連携 ● ARC GC による高速なメモリ管理
3.
目次目次 ● Swift のセットアップ ●
Swift の基本的な構文 ● Swift の発展的な構文
4.
目次目次 ● Swift のセットアップ ●
Swift の基本的な構文 ● Swift の発展的な構文
5.
SwiftSwift のセットアップのセットアップ ● XCode6
beta 以降のインストール ● XCode のダウンロードには課金アカウントが必要 – 年間 9000 円ぐらいの iOS or Mac App の開発契約 それだけ iOS 開発環境もそれだけでセットアップ完了 – 某 Android に比べれば 100 倍も簡単!
6.
SwiftSwift プロジェクトの作成プロジェクトの作成 ● 新しいプロジェクトを作る際に言語欄で 「Swift」を選択すると Swift
向けの各種 テンプレートプロジェクトが作成される
7.
SwiftSwift プロジェクトの作成プロジェクトの作成 ● 新しいプロジェクトを作る際に言語欄で 「Swift」を選択すると Swift
向けの各種 テンプレートプロジェクトが作成される
8.
SwiftSwift の基本的なお約束の基本的なお約束 ● 変数に対して型宣言はしません ● 変数の型は自動的に推論されます – バリアント型ではないので注意 ● 一般的なオブジェクト指向の言語です ●
記述的な部分では、AltJS に近い言語です – CofeeScript とかに近いという感じ(?) ● Class、Struct、Enum があります ● しかし、どれでも同じようなことができる…
9.
目次目次 ● Swift のセットアップ ●
Swift の基本的な構文 ● Swift の発展的な構文
10.
!書く前の注意!!書く前の注意! ● プログラム中に日本語がある場合に補完が効きま せん(コメントも含まれます)(XCode beta6-2) ● コピーライトに「年」とか入ってると死ぬ
11.
変数の型変数の型 (C(C言語との対応言語との対応)) ● 基本的に大文字になると考えればいい ● int
→ Int ● float → Float ● double → Double ● 文字列等 ● String (NSString in ObjC) ● Array, Dictionary ● AnyObject (id in ObjC)
12.
変数の宣言変数の宣言 ● let か
var を付けて宣言 (基本 var でいい) ● let は Java でいう Final に近い – 一度代入されると変更できない ● 型を明示することも可能
13.
クラスの宣言クラスの宣言 ● class 以下でクラスを宣言 ●
継承とプロトコル (インターフェース) は : 以下にカンマ区切りで名前を羅列する ● フィールドの宣言は同じ
14.
init deinitinit deinit ● イニシャライザとファイナライザを記述できる ● !イニシャライザの段階でフィールド変数を 全部初期化しなければならない! –
例外はあるが後述する
15.
initinit のあれこれのあれこれ ● 継承した場合、super.init()
を呼ばないといけない ● しかし、super.init() の前に必ず継承して追加した フィールド変数を全て初期化しないといけない ● super.init() を呼ぶ前に継承元のフィールド変数を 読み込むような処理を書いてはいけない
16.
initinit のあれこれのあれこれ ● 継承した場合、super.init()
を呼ばないといけない ● しかし、super.init() の前に必ず継承して追加した フィールド変数を全て初期化しないといけない ● super.init() を呼ぶ前に継承元のフィールド変数を 読み込むような処理を書いてはいけない
17.
関数宣言関数宣言 ● 関数宣言は以下のようなフォーマットで行う ● func 関数名
(引数名1:引数型1, …) -> 返り値の型 { ● 無名関数はこのようには宣言しないので注意 – Blocks という項目にて後述
18.
オーバーライドオーバーライド ● 関数のオーバーライドは明示的に宣言する ● func の前に
override と記述
19.
静的メソッド静的メソッド ● func の前に
class を付ける ● 静的フィールド変数には対応していない – 構造体、列挙体のみ用いることができる
20.
表示関数表示関数 ● Java っぽく
print, println みたいな関数がある ● 文字列の中に数値を埋め込む方法もある
21.
文字列文字列 ● 文字列は直感的に分かりやすくなった ● NSString の基本的な操作構文にも対応してる ●
+ で文字列結合できるよ、やったね! – Objective-C では糞長い関数を書く必要がある
22.
数値数値 ● 数値は自動でオブジェクトにボクシングされる ● Objective-C 的には
NSNumber に勝手に変化する – 一見、生の数値に対してメソッドコールが可能
23.
キャストキャスト ● Swift では暗黙の型変換は行われない ●
1 + 1.1 はエラーになる (型が違うため) – 演算子オーバーロードで解決はできる ● 変数の型キャストは以下のように行う ● 型名で覆う キャスト範囲が分かりやすい
24.
演算子オーバーロード演算子オーバーロード ● 型の演算を上書きすることもできる ● @infix を付けて関数を書き換える
25.
タプルタプル ● タプルを用いることができる ● 簡易的な構造体だと思えば大体あってる (Float, Float, Float)
のタプルは struct fvec3{ float f1, f2, f3; } のようなもの
26.
Optional TypeOptional Type ● 個人的にややっこしい部分なので強調 ●
Swift では安全性の為に、基本的に変数に null の代入を許容していない → null の表現はどのようにしたらいいのか? → Optional Type を用いる – null を許容した型と捉えればいい
27.
? or !?
or ! ● 変数宣言の際に型を明示し、型名の後に ? or ! をつけると Optional Type になる ● null の代入が許容される
28.
nullnull に対する参照に対する参照 (1)(1) ●
基本的に null に対する参照は null が返る ● ランタイムエラーにはならず、処理が続行する ● Swift では明示的に記載しなければならない Null 要素の場合は結果は Null になる関数呼び出し
29.
nullnull に対する参照に対する参照 (2)(2) ●
null に対する参照が行われた場合、ランタイムエ ラーにしたいという場合も明示的に書く ● ? ではなく ! にする Null 要素の場合ランタイムエラーになる関数呼び出し
30.
Optional TypeOptional Type
の代入の代入 ● 通常の変数に Optional Type の変数を代入したい ● null の場合ランタイムエラーになる ● 単純に代入文を書くと構文エラーになる – 代入後の変数名に ! マークを付ける
31.
基本的にランタイムエラーに基本的にランタイムエラーに ● Optional Type
だが、基本的にnull参照はランタイ ムエラーにして欲しいし、! とか書きたくない場合 ● 要するに今まで通りの変数をお望みの場合 – 変数宣言時に型の後に ? ではなく ! で宣言 ● ! の記載を省略することができる (個人的には非推奨)
32.
配列配列 ● 配列の宣言は形名の後に[]をつける or Array<型名>
と宣言する ● 自動ボクシングで数値もらくらく格納!! 要素ゼロの配列で初期化 2要素の配列 同じ意味
33.
配列配列 :: 謎仕様謎仕様 ●
配列の Optional Type が使いにくい ● 何故かメンバが見付からなくなる ● 何故かインデックスアクセスができなくなる – [] アクセスも演算子オーバーロードみたいなもの ● 一度 ! で普通の配列型に代入してから用いる
34.
辞書辞書 ● 配列とほぼ同様に辞書も用いることができる ● しかし、型に対して注意する必要がある ● 謎バグは辞書でも発生する 格納されている変数の型は Optional Type
35.
辞書の型辞書の型 ● 辞書の型は初期化時に決定する ● 厳し目に設定されるので、よくエラーになる ● 明示的に型を表現することも可能
36.
forfor 文文 ● for
文がリッチになっている ● 列挙構文も勿論対応してるし、 タプルだったら中身まで分解できる
37.
型のエイリアス型のエイリアス ● 型には別名を付けて参照しやすくできる ● タプルとか辞書みたいに型が長くなるのには有効 – 構造体作れっていう突っ込みは無しで
38.
目次目次 ● Swift のセットアップ ●
Swift の基本的な構文 ● SwiftSwift の発展的な構文の発展的な構文
39.
列挙型列挙型 ● Swift において列挙型は以下のように定義する ●
case で各列挙要素を作る 複数一気に定義できる
40.
列挙型の型推論列挙型の型推論 ● 列挙型の比較など、型推論が有効なケースについ て、列挙型の名前の記述が省略できる
41.
列挙型内の関数列挙型内の関数 ● 列挙型内に関数を定義することができる Self によって呼出されている 列挙体が取得できる
42.
型に紐付いた列挙体型に紐付いた列挙体 ● 列挙体に型を紐付けることができる 紐付ける型、文字列も対応 ここを基準に値を振ってくれる
43.
列挙型を用いた列挙型を用いた SwitchSwitch ● Switch
構文で列挙型が使用できる
44.
値を紐付いた列挙体値を紐付いた列挙体 ● Enum の要素に値を紐付けることが可能 どの型の値を何個紐付けるか Switch
文の中で取り出せる 他の文中では不明
45.
型情報の確認型情報の確認 ● AnyObject (Any)
の型が何であるかを確認 ● as を用いることで確認が可能
46.
プロトコルプロトコル ((インターフェースインターフェース)) ● 実装しなければならない関数を定義する ● Java
でいうインターフェース この関数を実装しなければいけない
47.
Getter, SetterGetter, Setter ●
Getter, Setter の簡単な作成方法が用意されている ● フィールド自体が無い場合もあるので注意 X に依存した値で フィールドとして直接値を 持つように振舞っているだけ
48.
didset willsetdidset willset ● フィールド変数がセットされる前と後に動作を挟 む事ができる仕組みが用意されている
49.
構造体構造体 ● 構造体は以下のように定義できます ● 勿論関数も定義できるよ!!
50.
構造体のプロトコル構造体のプロトコル ● 構造体でもプロトコルを指定できる ● 指定された関数の実装が必須
51.
構造体構造体 : mutating:
mutating ● 構造体の内部に宣言された関数内で、メンバを書 き換える場合は関数に mutating の識別子をつける ● 高速化のためだと考えられる
52.
letlet 文の値文の値 ● Let
文は代入に成功した時に 1 を返す (?) ● Optional Chaining – それが実行できた時のみ動作
53.
第一級関数第一級関数 ● 関数が第一級オブジェクト ● Objective-C の
Blocks の役割もこれ
54.
Objective-CObjective-C との連携との連携 ● Swift
プロジェクト内で Objective-C ファイルを作 成すると、Bridging-Header が作成される ● Swift で扱うファイルをインクルード
55.
Objective-CObjective-C との連携との連携 ● Swift
のプログラムを Objective-C で用いる場合 ● プロジェクト名-Swift.h をインクルード
56.
変換命名規則変換命名規則 ● Objective-C と
Swift の関数変換 ● Objective-C ● Swift
57.
以上 ありがとうございました!
Baixar agora