So in Objective-C überprüft, wenn Boolesche Werte mit, es ist möglich, und ermutigt, zu schreiben Code, um einen Nicht-Null-Wert der Variablen verwendet, wie es boolean Wert ist, was bedeutet, dass Sie Code wie folgt schreiben:Swift Boolean
if (someBool) {
// Stuff
}
auch gibt es Gründe, warum Code wie folgt abgeraten:
if (someBool == YES) {
// Might run into problems here
}
die Gründe, warum eine boolean gegen eine andere boolean Kontrolle sind besser erklärt here, aber kurz die Frage ist nur, dass, wenn Sie Gleichheit YES
sind zu vergleichen oder NO
direkt, Sie vergleichen tatsächlich gegen 1
und 0
, jeweils. Da Objective-C die Verwendung von Nicht-Null-Werten als Wahrheitswert zulässt, könnte man am Ende etwas vergleichen, das als wahr betrachtet werden sollte, gegen YES
, und den Ausdruck auf NO
, z.
int trueNumber = 2;
if (trueNumber == YES) {
// Doesn't run because trueNumber != 1
}
Ist dies immer noch ein Problem in Swift? Code style Probleme beiseite, wenn ich etwas wie das folgende sehe
wird das ein Problem sein, oder spielt es nicht wirklich eine Rolle? Sind diese C-style-Vergleiche immer noch unter der Haube oder ist etwas in den Swift BooleanType eingebaut, das diese Probleme verhindert?
Okay, also ist der Grund, warum der Code, der in Objective-C ein Problem war, kein Problem ist, einfach wegen der strengen Typprüfung in Swift? Es scheint so, als ob ein Typ, um in booleschen Überprüfungen in Swift verwendet zu werden, im Grunde genommen einen strikt typisierten "Bool" (wie Sie oben gezeigt haben) zurückgeben muss, was das Problem vermeidet, dass C und Objective-C mit dem '' hatten typedef signiertes Zeichen. Ist es genauso einfach? – Ziewvater
@Ziewvater Yup, korrekt – Kametrixom