🙌

caseless enumの活用

2022/11/24に公開

caseless enumとは

  • caseがないenum定義のこと。

どういう時に使うのか

  • structやclassで static varstatic func のみを持つ場合は、caselessなenumで定義する。
  • 標準FrameworkのMemoryLayoutでも採用されている設計手法。

https://github.com/apple/swift/blob/e12e0b93d036130b90925fb1f89c6e2a4d5a0bec/stdlib/public/core/MemoryLayout.swift#L14-L41

何が嬉しいのか

  • structやclassだと意味のないインスタンスを生成不可にするためには private init() {} のように初期化子を隠蔽する必要があるが、そもそもenumにすればinitできないので解決する。
  • 要は名前空間のためだけに定義するのであれば、caselessのenumが有用になる。

参考

Discussion