技術と本について書くブログ

技術と本について書くblog。技術メモなど雑記を書いているblog。

Swift5.1で追加された型についているsomeって何?

someって何・・?

注意:こちらは調査中のため誤っている記述がある可能性があります。必ず他の文献も参考にしてください。

たとえば

func hoge() -> some View

someを入れないと Protocol 'SomeProtocol' can only be used as a generic constraint because it has Self or associated type requirements.

訳:プロトコル 'SomeProtocol' は、Self または関連する型要件を持っているため、一般的な制約としてのみ使用できます。

someとは

Swift 5.1で追加されたOpaque Result Typesのこと

swift-evolution/0244-opaque-result-types.md at master · apple/swift-evolution · GitHub

はい。知らないことを調べるとさらに知らない単語が出るやつ Opaque Result Typesって何?

Opaque Result Types

直訳で 不透明な結果タイプ。 generics的なことではなく、型を隠蔽してくれるらしい。

some ViewはViewの型を満たしているが厳密ではViewではない型。

これでなにが嬉しいの??

例えばViewの型だと色々入っているけど、全て使うわけでなくパフォーマンスロスが大きい。 そこでsomeを使うことにより必要な分だけ使用することが可能。 また、内部の実装を隠蔽することが同時に可能。