読者です 読者をやめる 読者になる 読者になる

SwiftでClassを表す方法(.Type、.self)

昨日のポストと同じく、日々使っていますが、ちゃんと調べたことなかったので。

Swiftでのクラスの記法

そもそも、SwiftではClassを表す方法として以下の2つがありますが、正直厳密な違いをわかっていませんでした。。。

  • .Type
  • .self

Swiftの言語仕様を解説したドキュメントを読んでみたところ、冒頭のTypesの項目に

  • Swiftには名前付きタイプというものがある。
  • 名前付きタイプは、class、struct、enum、protocolなどを含んでいる
  • 名前タイプは、名前と等しいタイプを持っている。
    • 例えば、MyClassというクラスはMyClassというタイプを持つ

と書いてあります。


次に、Metatype Typeの項目を読むと、

  • 名前付きタイプのmetaタイプは、名前 + .Typeで表す。
  • 名前 + .selfは、metaタイプに値としてアクセスする方法

と書いてあります。 なので、宣言する際には、.Typeを使用し、値を返す場合には.selfを使用するといった 感じですね。

参考

The Swift Programming Language (Swift 2.1) - Types