abcdefg12345
Originalaffisch- 10 juli 2013
- 21 oktober 2017
snabb 4
Kod: |_+_|
jag använder en variabel sträng eftersom jag behöver att den ska vara en sträng så att jag kan formatera den senare, jag definierade den som
Kod: |_+_|
abcdefg12345
Originalaffisch- 10 juli 2013
- 21 oktober 2017
Kod: |_+_|
0002378
Upphängd
- 28 maj 2017
- 23 oktober 2017
Och även om tillval har sina fördelar, får de mig också att vilja slå sönder min dator mot de övre kanterna på en soptunna.
Däremot, där Swift verkligen sparkar röv är i avdelningen för nedläggningar ... oh yeah! Java har dem också nu, men...
Och, naturligtvis, det faktum att Swift är mindre strikt när det gäller deklarationen av typer och de där irriterande semikolonen ... fantastiskt!
Reaktioner:abcdefg12345
0002378
Upphängd
- 28 maj 2017
- 24 oktober 2017
Du behöver ingen ny variabel. Du kan bara lägga till '!' till din Double(sträng), och det kommer att fungera.
Jag antar att jag hade fel om att Swift var dum i det här fallet. Men jag har stött på många fall av sådana kompilatorklagomål (det går inte att jämföra två olika numeriska typer).
Greene
- 15 juli 2015
- Fort Worth
- 24 oktober 2017
Eller så kan du använda valfri bindning för att packa upp värdet. Jag skulle prova en av dessa metoder först innan jag använder en forcerad upplindning
gnasher729
Upphängd
- 25 november 2005
- 24 oktober 2017
maculateConception sa: Jag tycker att Swift som språk är ganska skrattretande ibland, särskilt. kommer från Java-programmering. Och du tog upp ett av de bästa exemplen på det.Det är ganska aningslöst. Problemet är att OP inte känner till en grundläggande funktion hos Swift, vilket är valfria värden. Konstruktorn Double(String) kan uppenbarligen misslyckas om strängen inte innehåller ett nummer. Det är därför Double (String) inte ger och kan inte producera ett resultat av typen Double, utan ett av typen Double? , det är en valfri dubbel. Och en valfri Double kan inte jämföras med en Int.
Din 'lösning' är verkligen, riktigt hemsk. Den ! betyder 'Jag är säker på att denna omvandling kommer att lyckas. Om det inte gör det, krascha appen. låt d = Dubbel ('1234x')! kommer bara att krascha. Avsiktligt. För du kollade inte efter noll, och det var noll.
Det korrekta sättet är att leta efter fel. Till exempel
om låt d = Dubbel (MyValue), d > 10 {
// MyValue innehöll ett nummer och numret är > 10.
} annat {
// MyValue innehöll inget nummer, eller så var numret<= 10.
}
Om du tycker att det är värt besväret att skriva kod som är säker och faktiskt fungerar, då är Swift rätt språk.
0002378
Upphängd
- 28 maj 2017
- 24 oktober 2017
gnasher729 sa: Det är ganska aningslöst. Problemet är att OP inte känner till en grundläggande funktion hos Swift, vilket är valfria värden. Konstruktorn Double(String) kan uppenbarligen misslyckas om strängen inte innehåller ett nummer. Det är därför Double (String) inte ger och kan inte producera ett resultat av typen Double, utan ett av typen Double? , det är en valfri dubbel. Och en valfri Double kan inte jämföras med en Int.
Blev du mobbad i skolan? Du verkar ha ganska låg självkänsla eftersom du inte kunde svara utan att attackera mig.
Detta kommer att vara mitt första och sista meddelande till dig. Förslag till dig - försök att kommunicera på ett mer civiliserat sätt, så kommer livet att bli fantastiskt. Ta hand om dig.
Greene
- 15 juli 2015
- Fort Worth
- 25 oktober 2017
gnasher729 sa: Det korrekta sättet är att leta efter felet. Till exempel
om låt d = Dubbel (MyValue), d > 10 {
// MyValue innehöll ett nummer och numret är > 10.
} annat {
// MyValue innehöll inget nummer, eller så var numret<= 10.
}
Detta är tvetydigt - tänk om värdet är<= 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.
Ett mycket renare sätt skulle vara:
Kod: |_+_|
Även om jag verkligen tycker att MyValue bör lagras som en Double från början, och en NumberFormatter implementeras senare för att hantera vilken formatering som behövs. Det har en mycket lägre kognitiv börda för den som slutar med att läsa koden.
gnasher729
Upphängd
- 25 november 2005
- 26 oktober 2017
maculateConception sa: Blev du mobbad i skolan? Du verkar ha ganska låg självkänsla eftersom du inte kunde svara utan att attackera mig.
Detta kommer att vara mitt första och sista meddelande till dig. Förslag till dig - försök att kommunicera på ett mer civiliserat sätt, så kommer livet att bli fantastiskt. Ta hand om dig.
Jag attackerade dig inte. Jag attackerade ditt inlägg, som visar att du vet väldigt lite om Swift, och inkluderade en mycket farlig rekommendation. S
SAIRUS
till
- 21 augusti 2008
- 26 oktober 2017
Föra in
- 14 april 2018
- 14 april 2018
1) '!' du kan indikera att detta värde kommer att vara exakt int genom att lägga till märket.
Kod: |_+_| 2) Du kan ange typen när du definierar värdet.
Kod: |_+_| TILL
atmenterprises
- 28 januari 2006
- 27 april 2018
ynstek sa: Swift, är inte säker på att ditt värde är exakt int. Det finns två alternativ för att vara säker.
1) '!' du kan indikera att detta värde kommer att vara exakt int genom att lägga till märket.
Kod: |_+_| 2) Du kan ange typen när du definierar värdet.
Kod: |_+_|
Jag tror att ditt exempel #2 skulle misslyckas eftersom du försöker tilldela en strängkastning till en dubbel till en Int-variabel. Du antar också att MyValue inte är noll, vilket kan orsaka ett körtidsfel om det är noll eller icke-numeriskt.
Din #1 exempelförklaring stämmer inte heller. Ett utropstecken konverterar inte ett värde till ett Int. Den packar upp en valfri variabels värde. I ditt exempel skulle du få ett Dubbelt värde, inte ett Int, och bara om MyValue inte var noll eller ett icke-numeriskt värde.
Populära Inlägg