メンバーごとのイニシャライザーが構造体にのみ提供されるのはなぜですか?
イニシャライザーを自分で作成する必要がありますか?
イニシャライザーを自分で作成する必要がありますか?
はい。
メンバーごとの初期化子をクラスに拡張し、それらをより柔軟にする提案は、 2015年12月/ 2016年1月のSwiftEvolutionメーリングリストで徹底的に議論されました。
最終的に、提案はさまざまな理由で却下され、後で(Swift 3がリリースされた後に)トピックを再検討する可能性があります。
拒否の中で、Chris Lattnerは、メンバーごとの初期化が構造体専用に提供された理由を少なくとも1つ指摘しました。それは、Vec4
またはなどの純粋な「プロパティのバッグ」CGRect
を最小限のオーバーヘッドで記述できるためです。
2)メンバーごとの初期化糖は、「POD」タイプやその他の「プロパティのバッグ」タイプ(「Vec4」など)、およびCocoaが持つ多くのC構造体タイプ(CGRectなど)に大きなメリットをもたらします。このような場合、クライアントは初期化を希望することがよくあります。すべてのフィールドを明示的に、メンバーごとのinit提案により、この定型文が排除されます。このケースは、既存の機能がサービスを提供しようとしているものです。
ほとんどのクラスはおそらくもっと複雑であり、メンバーごとの初期化子をより細かく制御する必要があります。これにより、機能もはるかに複雑になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加