平々毎々(アーカイブ)

はてなダイアリーのアーカイブです。

C#から見たApple Swift

The Swift Programming Language

C#erによる濁った眼で見たSwiftです。間違いや不足などあればつど修正予定。

C#にもSwiftにもある
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にもなさそう