oimo’s blog

エンジニア(♀)のブログです

swift3.0の変更点

・カリー化関数宣言構文を削除
 引数を2つ以上持ったメソッドがあれば怪しいので注意⚠︎

・関数のパラメータからvarを削除
 card(1, suit: "♠") ←これがダメになる
  func card(rank: Int, suit: Character) {  }

 card(rank:1, suit: "♠") ←swift3.0
  func card(rank: Int, suit: Character) {  }

・++ -- 演算子を削除
 for (AAA in 1...5) {
  // 処理
  i++ ←これとかがダメになる
  ++i ←これとかがダメになる
 }
 for (AAA in 1...5) {
  // 処理
  i += 1 ←swift3.0
 }

Objective-CAPIをSwift用に最適化
・標準ライブラリへAPIガイドラインを適用
Objective-CのコンテンツをSwiftのタイプとしてインポート
APIの設計ガイドライン
 言葉のまんま

・C-Styleのfor文の削除
 for文には...を使ってね

・オプショナル配列のためのLazyflatMapを追加【保留】

・UnsafePointerとUnsafeMutablePointerから変換するためのInt uintに初期化子を追加します【保留】

・Swiftのテスト
 Package Managerを使用して品質向上が測れます
 使ってみないとなんとも

・暗黙的なタプルスプラットの動作を削除
 言葉のまんま

・タイプの装飾のためのinout宣言を調整
 inoutは参照のみ
 func foo(inout a:Int, inout b:Int) ←これとかがダメになる
 func foo(a: inout Int, inout b:Int) ←swift3.0

+++++++++++++++++++++++++++++++++++++
その他
+++++++++++++++++++++++++++++++++++++
・コメントの表記ルールを明確に
・モダンなPlaygroundでのリテラル
・Attributesで=ではなく:を使うように
・複数のパターンの"case"のラベルの変数
・Memberのインポート
・最初のラベルを含むすべてのパラメータにわたって一貫したラベルの挙動を確立
・@noescape @autoclosure の移動
・Functionのパラメータからletの明示的な使用を削除
・ImplicitlyUnwrappedOptionalタイプを廃止
・安全でないポインタNULL値を許可するかどうかをオプションを使って明示的に
Objective-C 軽量ジェネリックスのインポート
APIガイドラインにしたがってSet APIの更新
・Generic Result と autoreleasepool()のエラーハンドリングを追加
Objective-C selectorのgetter/setterの参照
・コレクションとインデックスの新しいモデル
・Mutability と Foundation の Value Types
Objective-C専用のOptional要件作成
・(ほとんどの)メンバーの参照のキーワードを許可
・Swiftから完全に暗黙のブリッジ変換をなくします

 

<参考>

dev.classmethod.jp