abcdefg12345
Cartell original- Jul 10, 2013
- Oct 21, 2017
ràpid 4
Codi: |_+_|
Estic fent servir una cadena variable perquè necessito que sigui una cadena per poder-la formatar més endavant, la vaig definir com
Codi: |_+_|
abcdefg12345
Cartell original- Jul 10, 2013
- Oct 21, 2017
Codi: |_+_|
0002378
Suspès
- 28 de maig de 2017
- Oct 23, 2017
I, tot i que els opcionals tenen els seus avantatges, també em fan venir ganes d'aixafar el meu ordinador contra les vores superiors d'un contenidor d'escombraries.
No obstant això, on Swift realment fa una puntada de cul és al departament de tancaments... oh, sí! Java també els té, ara, però...
I, per descomptat, el fet que Swift sigui menys estricte en la declaració de tipus i aquells molestos punt i coma... increïble!
Reaccions:abcdefg12345
0002378
Suspès
- 28 de maig de 2017
- Oct 24, 2017
No necessiteu cap variable nova. Només podeu afegir '!' al vostre Double (cadena), i funcionarà.
Suposo que m'he equivocat de que Swift fos estúpid en aquest cas. Però, he trobat molts casos d'aquestes queixes del compilador (incapaç de comparar dos tipus numèrics diferents).
Greene
- Jul 15, 2015
- Fort Worth
- Oct 24, 2017
O podeu utilitzar l'enllaç opcional per desembolicar el valor. Primer provaria un d'aquests mètodes abans d'utilitzar un desembolicat forçat
gnasher729
Suspès
- 25 de novembre de 2005
- Oct 24, 2017
maculateConception va dir: Crec que Swift, com a llenguatge, és bastant risible de vegades, especialment. procedent de la programació Java. I vas plantejar un dels millors exemples d'això.Això és bastant despistat. El problema és que l'OP no coneix una característica bàsica de Swift, que són els valors opcionals. El constructor Double(String) òbviament pot fallar si la cadena no conté un número. És per això que Double (String) no produeix ni pot produir un resultat de tipus Double, sinó un de tipus Double? , això és un doble opcional. I un doble opcional no es pot comparar amb un Int.
La teva 'solució' és molt, molt horrible. El! significa 'Estic segur que aquesta conversió tindrà èxit'. Si no és així, si us plau, bloqueja l'aplicació. sigui d = Doble ('1234x')! simplement estavellarà. Intencionalment. Perquè no vas comprovar si no, i va ser nul.
La manera correcta és comprovar l'error. Per exemple
si deixem d = Doble (El meuValor), d > 10 {
// MyValue contenia un número i el nombre és > 10.
} altrament {
// MyValue no contenia cap número, o el número sí<= 10.
}
Si creieu que val la pena escriure codi que sigui segur i que funcioni realment, aleshores Swift és l'idioma adequat.
0002378
Suspès
- 28 de maig de 2017
- Oct 24, 2017
gnasher729 va dir: Això és bastant despistat. El problema és que l'OP no coneix una característica bàsica de Swift, que són els valors opcionals. El constructor Double(String) òbviament pot fallar si la cadena no conté un número. És per això que Double (String) no produeix ni pot produir un resultat de tipus Double, sinó un de tipus Double? , això és un doble opcional. I un doble opcional no es pot comparar amb un Int.
Va ser assetjat a l'escola? Sembla que tens una autoestima força baixa perquè no pots respondre sense atacar-me.
Aquesta serà la meva primera i última comunicació amb tu. Suggeriment per a vostè: intenteu comunicar-vos d'una manera més civil i la vida serà fantàstica. Cuida't.
Greene
- Jul 15, 2015
- Fort Worth
- Oct 25, 2017
gnasher729 va dir: La manera correcta és comprovar l'error. Per exemple
si deixem d = Doble (El meuValor), d > 10 {
// MyValue contenia un número i el nombre és > 10.
} altrament {
// MyValue no contenia cap número, o el número sí<= 10.
}
Això és ambigu - què passa si el valor és<= 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.
Una manera molt més neta seria:
Codi: |_+_|
Tot i que, realment crec que MyValue s'hauria d'emmagatzemar com a Double des del principi, i un NumberFormatter implementat més tard per gestionar qualsevol format que sigui necessari. Això té una càrrega cognitiva molt menor per a qui acaba llegint el codi.
gnasher729
Suspès
- 25 de novembre de 2005
- Oct 26, 2017
maculateConception va dir: Va ser assetjat a l'escola? Sembla que tens una autoestima força baixa perquè no pots respondre sense atacar-me.
Aquesta serà la meva primera i última comunicació amb tu. Suggeriment per a vostè: intenteu comunicar-vos d'una manera més civil i la vida serà fantàstica. Cuida't.
Bé, jo no t'he atacat. Vaig atacar la teva publicació, que demostra que en saps molt poc sobre Swift, i vaig incloure una recomanació molt perillosa. S
SAIRUS
a
- 21 d'agost de 2008
- Oct 26, 2017
inserir
- Mar 14, 2018
- Mar 14, 2018
1) '!' podeu indicar que aquest valor serà int exact afegint la marca.
Codi: |_+_| 2) Podeu especificar el tipus en definir el valor.
Codi: |_+_| A
empreses
- 28 de gener de 2006
- Mar 27, 2018
ynstek va dir: Swift, no estàs segur que el teu valor sigui exactament int. Hi ha dues opcions per assegurar-se.
1) '!' podeu indicar que aquest valor serà int exact afegint la marca.
Codi: |_+_| 2) Podeu especificar el tipus en definir el valor.
Codi: |_+_|
Crec que el vostre exemple número 2 fallaria perquè esteu intentant assignar un llançament de cadena a un doble a una variable Int. A més, suposeu que MyValue no és nul, cosa que podria provocar un error d'execució si fos nul o no numèric.
La teva explicació d'exemple número 1 tampoc és correcta. Un signe d'exclamació no converteix un valor en un valor Int. Desembolica el valor d'una variable opcional. En el vostre exemple, acabareu amb un valor Double, no un Int, i només si MyValue no fos nul o un valor no numèric.
Entrades Populars