Warum funktioniert das Folgende nicht in Swift?Swift === mit Null
if someObject === nil {
}
Sie haben den Test mit dem Operator == zu tun wie
if someObject == nil {
}
Ich dachte, dass === mehr war die Instanzen wie die Herstellung sicher, wo genau die gleiche (im Grunde die Zeiger zu vergleichen) und == war eher ein isEqual-Check. So würde ich denken === wäre besser geeignet zum Testen gegen Null, aber ich bin offensichtlich falsch.
In der Dokumentation:
=== oder „Identisch mit“ bedeutet, dass zwei Konstanten oder Variablen der Klasse Typ Instanz genau die gleiche Klasse beziehen.
== oder „Gleich“ bedeutet, dass zwei Instanzen „gleich“ betrachtet oder „äquivalent“ in Wert, für einige geeignete Bedeutung von „gleich“, wie es durch die Art des Konstrukteurs festgelegt.“
Folgendes funktioniert für mich 'Klasse Person {} lassen p = Person() lassen q: Person? = nil println (p === nil) println (q === nil) ' –
Das Objekt hätte den Wert nil, nicht genau dasselbe Objekt wie nil, was === bedeutet. – milesper