abcdefg12345
Originalplakat- 10.07.2013
- 21.10.2017
schnell 4
Code: |_+_|
Ich verwende einen variablen String, weil es ein String sein muss, damit ich ihn später formatieren kann, ich habe ihn definiert als
Code: |_+_|
abcdefg12345
Originalplakat- 10.07.2013
- 21.10.2017
Code: |_+_|
0002378
Ausgesetzt
- 28. Mai 2017
- 23.10.2017
Und obwohl optionale Optionen ihre Vorteile haben, möchte ich meinen Computer auch gegen die Oberkanten eines Müllcontainers zertrümmern.
Wo Swift jedoch wirklich in den Arsch tritt, ist die Abteilung der Verschlüsse ... oh ja! Java hat sie jetzt auch, aber ...
Und natürlich die Tatsache, dass Swift bei der Deklaration von Typen und diesen lästigen Semikolons weniger streng ist ... großartig!
Reaktionen:abcdefg12345
0002378
Ausgesetzt
- 28. Mai 2017
- 24.10.2017
Sie brauchen keine neue Variable. Sie können einfach '!' hinzufügen. zu Ihrem Double(string), und es wird funktionieren.
Ich glaube, ich lag falsch, dass Swift in diesem Fall dumm war. Aber ich habe viele Fälle von solchen Compiler-Beschwerden erlebt (nicht in der Lage, zwei verschiedene numerische Typen zu vergleichen).
Grün
- 15. Juli 2015
- Fort Worth
- 24.10.2017
Oder Sie können die optionale Bindung verwenden, um den Wert zu entpacken. Ich würde zuerst eine dieser Methoden ausprobieren, bevor ich ein Force Unwrap verwende
gnasher729
Ausgesetzt
- 25. November 2005
- 24.10.2017
maculateConception sagte: Ich denke, dass Swift als Sprache manchmal ziemlich lächerlich ist, insbesondere. kommt aus der Java-Programmierung. Und Sie haben eines der besten Beispiele dafür genannt.Das ist ziemlich ahnungslos. Das Problem ist, dass das OP eine grundlegende Funktion von Swift nicht kennt, bei der es sich um optionale Werte handelt. Der Konstruktor Double(String) kann offensichtlich fehlschlagen, wenn der String keine Zahl enthält. Deshalb liefert Double (String) kein Ergebnis vom Typ Double, sondern eines vom Typ Double? , das ist ein optionales Double. Und ein optionales Double kann nicht mit einem Int verglichen werden.
Deine 'Lösung' ist wirklich schrecklich. Die ! bedeutet 'Ich bin sicher, dass diese Konvertierung erfolgreich sein wird. Wenn dies nicht der Fall ist, stürzen Sie die App bitte ab. let d = Double ('1234x')! wird einfach abstürzen. Absichtlich. Weil Sie nicht nach Null gesucht haben, und es war Null.
Der richtige Weg ist die Fehlersuche. Zum Beispiel
wenn d = Double (MyValue), d > 10 {
// MyValue enthielt eine Zahl, und die Zahl ist > 10.
} anders {
// MyValue enthielt keine Zahl oder die Zahl war<= 10.
}
Wenn Sie der Meinung sind, dass es sich lohnt, sicheren und funktionierenden Code zu schreiben, dann ist Swift die richtige Sprache.
0002378
Ausgesetzt
- 28. Mai 2017
- 24.10.2017
gnasher729 sagte: Das ist ziemlich ahnungslos. Das Problem ist, dass das OP eine grundlegende Funktion von Swift nicht kennt, bei der es sich um optionale Werte handelt. Der Konstruktor Double(String) kann offensichtlich fehlschlagen, wenn der String keine Zahl enthält. Deshalb liefert Double (String) kein Ergebnis vom Typ Double, sondern eines vom Typ Double? , das ist ein optionales Double. Und ein optionales Double kann nicht mit einem Int verglichen werden.
Wurden Sie in der Schule gemobbt? Du scheinst ein ziemlich geringes Selbstwertgefühl zu haben, weil du nicht antworten konntest, ohne mich anzugreifen.
Dies wird meine erste und letzte Mitteilung an Sie sein. Vorschlag an Sie - versuchen Sie, zivilisierter zu kommunizieren, und das Leben wird großartig sein. Aufpassen.
Grün
- 15. Juli 2015
- Fort Worth
- 25.10.2017
gnasher729 sagte: Der richtige Weg ist, nach dem Fehler zu suchen. Zum Beispiel
wenn d = Double (MyValue), d > 10 {
// MyValue enthielt eine Zahl, und die Zahl ist > 10.
} anders {
// MyValue enthielt keine Zahl oder die Zahl war<= 10.
}
Dies ist mehrdeutig - was ist, wenn der Wert<= 10 should produce different results from the value being nil? To be fair, the OP's post is ambiguous as they were forcing the unwrap, meaning a nil value would crash. However in most business cases, a nil value would be handled differently (safely) from an insufficient value.
Ein viel saubererer Weg wäre:
Code: |_+_|
Obwohl ich wirklich denke, dass MyValue von Anfang an als Double gespeichert und später ein NumberFormatter implementiert werden sollte, um die erforderliche Formatierung zu verarbeiten. Das hat eine viel geringere kognitive Belastung für denjenigen, der den Code schließlich liest.
gnasher729
Ausgesetzt
- 25. November 2005
- 26.10.2017
maculateConception sagte: Wurden Sie in der Schule gemobbt? Du scheinst ein ziemlich geringes Selbstwertgefühl zu haben, weil du nicht antworten konntest, ohne mich anzugreifen.
Dies wird meine erste und letzte Mitteilung an Sie sein. Vorschlag an Sie - versuchen Sie, zivilisierter zu kommunizieren, und das Leben wird großartig sein. Aufpassen.
Nun, ich habe dich nicht angegriffen. Ich habe Ihren Beitrag angegriffen, der zeigt, dass Sie sehr wenig über Swift wissen, und habe eine sehr gefährliche Empfehlung aufgenommen. S
SAIRUS
zu
- 21. August 2008
- 26.10.2017
Einfügung
- 14.04.2018
- 14.04.2018
1) '!' Sie können angeben, dass dieser Wert exakt int ist, indem Sie die Markierung hinzufügen.
Code: |_+_| 2) Sie können den Typ beim Definieren des Wertes angeben.
Code: |_+_| ZU
atenterprises
- 28. Januar 2006
- 27.04.2018
ynstek sagte: Swift, bin mir nicht sicher, ob dein Wert genau int ist. Es gibt zwei Möglichkeiten, um sich zu vergewissern.
1) '!' Sie können angeben, dass dieser Wert exakt int ist, indem Sie die Markierung hinzufügen.
Code: |_+_| 2) Sie können den Typ beim Definieren des Wertes angeben.
Code: |_+_|
Ich denke, Ihr Beispiel Nr. 2 würde fehlschlagen, weil Sie versuchen, einer Int-Variablen einen String-Cast zu einem Double zuzuweisen. Außerdem gehen Sie davon aus, dass MyValue nicht nil ist, was zu einem Laufzeitfehler führen kann, wenn es nil oder nicht numerisch ist.
Ihre Beispielerklärung Nr. 1 ist auch nicht richtig. Ein Ausrufezeichen wandelt einen Wert nicht in einen Int. Es entpackt den Wert einer optionalen Variablen. In Ihrem Beispiel würden Sie am Ende einen Double-Wert und keinen Int-Wert erhalten, und zwar nur, wenn MyValue nicht nil oder ein nicht numerischer Wert wäre.
Beliebte Beiträge