項目種別
補足
登場した回
伝えた回
記載日
Dec 15, 2022 3:27 PM
関連資料
独自型を ExpressibleByNilLiteral
に対応させて、そのインスタンスを nil
と比較しようとすると、意図した通りに判定されないことがあるようです。
これは、独自型が Equatable
に準拠していないと、片側を nil
と比較するときにそれが _OptionalNilComparisonType
型に変換されて、それに該当する等価比較演算子を使った評価がされるためでした。このときの反対側は Optional
型が期待されますが、全ての型はその型を扱うオプショナルのサブタイプにあたるため、暗黙的に変換が行われるためにマッチします。
独自の型が Equatable
にも準拠していれば、両辺が独自型の等価比較が期待され、ここで片側の nil
は独自の型として扱われ、あらかじめ想定しておいた通りの nil
との比較が実現できます。