Optionals?
Nein, ich will nicht provozieren. Ich will mich auch nicht lustig machen über Swift (dazu würde mir schon die nötige Kompetenz fehlen).
Ich will es einfach mal verstehen. Und je öfter ich es in Büchern und Dokumenten lese und es in eigenem Source-Code dann sehe, desto weniger verstehe ich, was der effektive Nutzen und Sinn für den Programmierer nun sein soll.
In Objective-C konnte jedes Objekt auf einen echten Wert oder eben auf nil zeigen. In Swift geht das mit den "normalen" Typen jetzt nicht mehr, nil ist nicht mehr "erlaubt". Dafür wurden Optionals eingeführt, um wieder das zu ermöglichen, was in Objective-C per se schon ging.
Dass es ein Problem beim Programmablauf geben kann, wenn ein Wert "nil" ist klar, darum musste man eben im Bedarfsfall abfragen, ob da ein Wert oder nil hinterlegt ist.
Habe ich ein Optional mache ich aber mit all den "if let" Konstrukten auch nix anderes als eben diese Abfrage. Zusätzlich "verschandle" ich die Lesbarkeit im Code mit zig Fragezeichen und Ausrufezeichen, um Optionals anzulegen bzw. auszuwrappen.
Wo ist dieses Plus an Sicherheit? Übersehe ich da was elementares? Vielleicht sind meine Projekte auch programmiertechnisch zu einfach. Aber die Jungs von Apple müssen sich doch was dabei gedacht haben, als sie Optionals eingeführt haben?
Vielleicht kann mir das jemand in aller Einfachheit erklären. Oder eben nicht.
Nein, ich will nicht provozieren. Ich will mich auch nicht lustig machen über Swift (dazu würde mir schon die nötige Kompetenz fehlen).
Ich will es einfach mal verstehen. Und je öfter ich es in Büchern und Dokumenten lese und es in eigenem Source-Code dann sehe, desto weniger verstehe ich, was der effektive Nutzen und Sinn für den Programmierer nun sein soll.
In Objective-C konnte jedes Objekt auf einen echten Wert oder eben auf nil zeigen. In Swift geht das mit den "normalen" Typen jetzt nicht mehr, nil ist nicht mehr "erlaubt". Dafür wurden Optionals eingeführt, um wieder das zu ermöglichen, was in Objective-C per se schon ging.
Dass es ein Problem beim Programmablauf geben kann, wenn ein Wert "nil" ist klar, darum musste man eben im Bedarfsfall abfragen, ob da ein Wert oder nil hinterlegt ist.
Habe ich ein Optional mache ich aber mit all den "if let" Konstrukten auch nix anderes als eben diese Abfrage. Zusätzlich "verschandle" ich die Lesbarkeit im Code mit zig Fragezeichen und Ausrufezeichen, um Optionals anzulegen bzw. auszuwrappen.
developer.apple.com schrieb:
Not only are optionals safer and more expressive than nil pointers in Objective-C, they are at the heart of many of Swift’s most powerful features.
Wo ist dieses Plus an Sicherheit? Übersehe ich da was elementares? Vielleicht sind meine Projekte auch programmiertechnisch zu einfach. Aber die Jungs von Apple müssen sich doch was dabei gedacht haben, als sie Optionals eingeführt haben?
Vielleicht kann mir das jemand in aller Einfachheit erklären. Oder eben nicht.