abcdefg12345
Original plakat- 10. juli 2013
- 21. oktober 2017
hurtig 4
Kode: |_+_|
jeg bruger en variabel streng, fordi jeg har brug for, at den er en streng, så jeg kan formatere den senere, jeg definerede den som
Kode: |_+_|
abcdefg12345
Original plakat- 10. juli 2013
- 21. oktober 2017
Kode: |_+_|
0002378
Suspenderet
- 28. maj 2017
- 23. oktober 2017
Og selvom ekstraudstyr har deres fordele, giver det mig også lyst til at smadre min computer mod de øverste kanter af en container.
Men hvor Swift virkelig sparker røv er i afdelingen for lukninger ... oh yeah ! Java har dem også nu, men ...
Og selvfølgelig det faktum, at Swift er mindre streng i erklæringen om typer og de irriterende semikoloner ... fantastisk!
Reaktioner:abcdefg12345
0002378
Suspenderet
- 28. maj 2017
- 24. oktober 2017
Du behøver ikke en ny variabel. Du kan bare tilføje '!' til din Double(streng), og det vil virke.
Jeg tager vel fejl, når Swift er dum i dette tilfælde. Men jeg har stødt på mange tilfælde af sådanne compilerklager (ude af stand til at sammenligne to forskellige numeriske typer).
Greene
- 15. juli 2015
- Fort Worth
- 24. oktober 2017
Eller du kan bruge valgfri binding til at pakke værdien ud. Jeg ville prøve en af disse metoder først, før jeg brugte en force upwrap
gnasher729
Suspenderet
- 25. november 2005
- 24. oktober 2017
maculateConception sagde: Jeg synes, at Swift som sprog til tider er ret latterligt, især. kommer fra Java-programmering. Og du tog et af de bedste eksempler på det op.Det er ret uvidende. Problemet er, at OP'en ikke kender til en grundlæggende funktion ved Swift, som er valgfri værdier. Konstruktøren Double(String) kan åbenbart fejle, hvis strengen ikke indeholder et tal. Det er derfor, Double (String) ikke og kan ikke producere et resultat af typen Double, men et af typen Double? , det er en valgfri Double. Og en valgfri Double kan ikke sammenlignes med en Int.
Din 'løsning' er virkelig, virkelig forfærdelig. Det ! betyder 'Jeg er sikker på, at denne konvertering vil lykkes. Hvis det ikke gør det, skal du nedbryde appen'. lad d = Dobbelt ('1234x')! vil bare gå ned. Med vilje. Fordi du ikke tjekkede for nul, og det var nul.
Den korrekte måde er at tjekke for fejlen. For eksempel
hvis lad d = Dobbelt (MyValue), d > 10 {
// MyValue indeholdt et tal, og tallet er > 10.
} andet {
// MyValue indeholdt ikke et tal, eller tallet var det<= 10.
}
Hvis du synes, det er umagen værd at skrive kode, der er sikker og faktisk virker, så er Swift det rigtige sprog.
0002378
Suspenderet
- 28. maj 2017
- 24. oktober 2017
gnasher729 sagde: Det er ret uvidende. Problemet er, at OP'en ikke kender til en grundlæggende funktion ved Swift, som er valgfri værdier. Konstruktøren Double(String) kan åbenbart fejle, hvis strengen ikke indeholder et tal. Det er derfor, Double (String) ikke og kan ikke producere et resultat af typen Double, men et af typen Double? , det er en valgfri Double. Og en valgfri Double kan ikke sammenlignes med en Int.
Blev du mobbet i skolen? Du ser ud til at have ret lavt selvværd, fordi du ikke kunne reagere uden at angribe mig.
Dette vil være min første og sidste kommunikation til dig. Forslag til dig - prøv at kommunikere på en mere civil måde, og livet bliver fantastisk. Pas på.
Greene
- 15. juli 2015
- Fort Worth
- 25. oktober 2017
gnasher729 sagde: Den korrekte måde er at tjekke for fejlen. For eksempel
hvis lad d = Dobbelt (MyValue), d > 10 {
// MyValue indeholdt et tal, og tallet er > 10.
} andet {
// MyValue indeholdt ikke et tal, eller tallet var det<= 10.
}
Dette er tvetydigt - hvad nu hvis værdien er<= 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.
En meget renere måde ville være:
Kode: |_+_|
Selvom jeg virkelig synes, at MyValue skal gemmes som en Double fra starten, og en NumberFormatter implementeret senere for at håndtere den formatering, der er nødvendig. Det har en meget lavere kognitiv byrde for den, der ender med at læse koden.
gnasher729
Suspenderet
- 25. november 2005
- 26. oktober 2017
maculateConception sagde: Blev du mobbet i skolen? Du ser ud til at have ret lavt selvværd, fordi du ikke kunne reagere uden at angribe mig.
Dette vil være min første og sidste kommunikation til dig. Forslag til dig - prøv at kommunikere på en mere civil måde, og livet bliver fantastisk. Pas på.
Nå, jeg angreb dig ikke. Jeg angreb dit indlæg, som viser, at du ved meget lidt om Swift, og inkluderede en meget farlig anbefaling. S
SAIRUS
til
- 21. august 2008
- 26. oktober 2017
indsætte
- 14. april 2018
- 14. april 2018
1) '!' du kan angive, at denne værdi vil være nøjagtig int ved at tilføje mærket.
Kode: |_+_| 2) Du kan angive typen, når du definerer værdien.
Kode: |_+_| TIL
atmenterprises
- 28. januar 2006
- 27. april 2018
ynstek sagde: Swift, er ikke sikker på din værdi er præcis int. Der er to muligheder for at sikre.
1) '!' du kan angive, at denne værdi vil være nøjagtig int ved at tilføje mærket.
Kode: |_+_| 2) Du kan angive typen, når du definerer værdien.
Kode: |_+_|
Jeg tror, dit #2 eksempel ville mislykkes, fordi du forsøger at tildele en streng-cast til en double til en Int-variabel. Du antager også, at MyValue ikke er nul, hvilket kan forårsage en runtime-fejl, hvis den er nul eller ikke-numerisk.
Din #1 eksempelforklaring er heller ikke rigtig. Et udråbstegn konverterer ikke en værdi til en Int. Den udpakker en valgfri variabels værdi. I dit eksempel ville du ende med en Double-værdi, ikke en Int, og kun hvis MyValue ikke var nul eller en ikke-numerisk værdi.
Populære Indlæg