Swift おさらい
以下に内容をメモしましたが、スライドが公開されたのでそちらをみた方が確実です。
http://www.slideshare.net/taketin/swift-36238223
Swiftとは?
Swift is "Objective-C without the C"
特徴
モダン
安全
高速
インタラクティブ
仕様
変数(var)
定数(let)
型推論
変数名は日本語、ユニコード絵文字も一部使用可。
暗黙の型変換はしない。
変数の展開
\()で展開
optional Value
nil許容(型の後ろに?をつける)
「wrap」する
「unwrap」する !
OpitionalChaining
メソッドチェーンを書く
Tuple
var response = (404, #NotFound")
Bool型
Yes、Noがなくなった
コレクション
配列
いろんな書き方がある。配列イテレーション
配列のコピー
参照渡し、コピーがあるので注意配列範囲指定
..は未満 ...は以下(Rubyとは逆なので注意)ディクショナリ
キーの型はhashableでなくてはならない。ディクショナリイテレーション
ディクショナリのコピー
コントロール
- if文
- while文
- for文
- switch文 基本berak動作
列挙型(Enum)
パワーアップ!
Associated Values
関数
func foo(bar;String,baz:lnt)->String{}
- キーワード指定可
- 引数の省略可
- 引数の可変長可
- 返値が関数、返値がタップ
クロージャ
- 型推論が聞く
- 式が一つだけの場合Returnを省略できる
- 引数をプレースホルダで置換できる
- blocks内でselfを使った場合の循環参照回避
クラス
基本はキャメルケースで名前を書く
- コンストラクタ
- コンビニエンスコンストラクタ コンストラクタ引数を省略することができる
- 継承
- メソッドオーバーライド
- コピー クラスは参照渡し +比較(===)
- Getter,Setter getのみでReadOnryにできる
- willSet,didSet
- 遅延ロード
Subscript
オブジェクトへの添え字アクセスができる
アクセスコントロールも可能
構造体
- 初期化が必要
- mutationg
- コピー(構造体は値渡し)
protpcol
Extention
クラスだけではなく型などにも適用できる
プロトコルの継承もできる
Generics
- 型制約なし
- 型制約あり
TypeCastion
- Any & AnyObject
- 型チェック
- ダウンキャスト オプショナルで安全に使える
Operator Functions
- 存在する演算子を拡張
- 存在しない演算子を定義
おまけ:正規表現
おまけ:名前空間
「Swiftは名前空間は暗黙のうちに提供される」
おまけ:今後の展望
- アクセス修飾子
- CocoaPods
- 汎用言語として公開して欲しい
SwiftとObjectve-Cの蜜月関係
今までの資産はどうなるのか?
Swift->Objective-C
- SwiftからObjectibe-Cのコードを呼び出す
- SwiftでObjectibe-Cのクラスをサブクラス化する
AFNetworkingって何? オープンソースウエア
Objective-C->Swift
- Swiftで作ったクラスはObjectibe-Cのサブクラス化できない。
私的感想
- Swiftを使うと生産性が上がる&安全性が高くなる
Objective-Cで作っていたクラスを呼び出すことができるので過去の資産も使える
だが、安全性を考えるとなるべく使わない方がいいのかなと思った。コードの短縮は便利な反面、可読性が低くなるのでチームや会社でコーディングする時は規約をしっかり決めないと、各自が自由なコードを書いて保守が大変になりそう。