2014-06-03 C#から見たApple Swift General C# The Swift Programming LanguageC#erによる濁った眼で見たSwiftです。間違いや不足などあればつど修正予定。 C#にもSwiftにもある クラスと構造体 ジェネリクス(Swiftでは型引数を取る型引数の制約をつけられるらしい?) 型推論 ファーストクラス関数 ラムダ式 クロージャ サブスクリプト(C#ではインデクサー) 演算子オーバーロード 属性 C#にもSwiftにもあるがSwiftのほうが強力 プロパティ(遅延初期化とかもある。C#だと遅延初期化にはLazy<T>を使うので言語の機能ではない) プロトコル(C#ではインターフェース) 型拡張(C#では拡張メソッドのみ) enum(下に書いたように代数的データ型のサポートがあるので) 文字列(文字列補間、すなわち変数を含んだ文字列とか、変更可能文字列とか) optional(C#ではnullableがあり、null伝播を次バージョンでサポート予定ではあるが) SwiftにはあるがC#にはない パターンマッチ タプル(C#のタプルは言語の機能ではない) 代数的データ型(enumが該当) ARC(言語の機能ではないけど) デイニシャライザー(これってC++のデストラクタ―かな) 委譲(Obj-Cのデリゲートと同じもので、C#のデリゲートとは違う) 範囲演算子 型エイリアス immutableサポート ユーザー定義演算子 C#にはあるがSwiftにはなさそう 名前空間 構造化例外 デリゲート(C#のデリゲート。もうあまり使わない機能だしどうでもいいが……) イベント(Swiftでは、クロージャを渡してコールバックしてもらうとか、PropertyChangedイベントについてはプロパティオブザーバーで対応するとか、そんな感じ) ジェネレータ(yield return) 非同期サポート(Obj-CやSwiftではGCDを使うようだ) 変性 リフレクション(ランタイムの性質上しょうがない) GC(言語の機能ではないけど) C#にもSwiftにもなさそう 構造的部分型 リスト内包 モナド用構文(C#ではLINQのクエリ構文で変則的にサポート) 正規表現リテラル マクロ