abcdefg12345
Manifesto originale- 10 luglio 2013
- 21 ottobre 2017
veloce 4
Codice: |_+_|
sto usando una stringa variabile perché ho bisogno che sia una stringa in modo da poterla formattare in seguito, l'ho definita come
Codice: |_+_|
abcdefg12345
Manifesto originale- 10 luglio 2013
- 21 ottobre 2017
Codice: |_+_|
0002378
Sospeso
- 28 maggio 2017
- 23 ottobre 2017
E, mentre gli optional hanno i loro vantaggi, mi fanno venire voglia di sbattere il mio computer contro i bordi superiori di un cassonetto.
Tuttavia, dove Swift fa davvero il culo è nel dipartimento delle chiusure ... oh sì! Anche Java li ha, ora, ma...
E, naturalmente, il fatto che Swift sia meno severo nella dichiarazione dei tipi e quei fastidiosi punti e virgola... fantastico!
Reazioni:abcdefg12345
0002378
Sospeso
- 28 maggio 2017
- 24 ottobre 2017
Non hai bisogno di una nuova variabile. Puoi semplicemente aggiungere '!' al tuo Double(string) e funzionerà.
Immagino di sbagliarmi sul fatto che Swift fosse stupido in questo caso. Ma ho riscontrato molti casi di tali lamentele del compilatore (incapace di confrontare due diversi tipi numerici).
verde
- 15 luglio 2015
- Fort Worth
- 24 ottobre 2017
Oppure puoi utilizzare l'associazione facoltativa per scartare il valore. Proverei uno di questi metodi prima di utilizzare uno scarto forzato
gnasher729
Sospeso
- 25 novembre 2005
- 24 ottobre 2017
maculateConception ha detto: Penso che Swift, come linguaggio, a volte sia abbastanza ridicolo, specialmente. proveniente dalla programmazione Java. E ne hai tirato fuori uno dei migliori esempi.Questo è abbastanza all'oscuro. Il problema è che l'OP non conosce una caratteristica di base di Swift, ovvero i valori facoltativi. Il costruttore Double(String) può ovviamente fallire se la String non contiene un numero. Ecco perché Double (String) non produce e non può produrre un risultato di tipo Double, ma uno di tipo Double? , questo è un Double opzionale. E un Double opzionale non può essere paragonato a un Int.
La tua 'soluzione' è davvero, davvero terribile. Il ! significa 'Sono sicuro che questa conversione avrà successo. In caso contrario, arrestare l'app'. let d = Double ('1234x')! andrà in crash. Intenzionalmente. Perché non hai controllato per zero, ed era zero.
Il modo corretto è controllare l'errore. Per esempio
se sia d = Double (MyValue), d > 10 {
// MyValue conteneva un numero e il numero è > 10.
} altro {
// MyValue non conteneva un numero o il numero era<= 10.
}
Se pensi che valga la pena scrivere codice che sia sicuro e che funzioni davvero, allora Swift è il linguaggio giusto.
0002378
Sospeso
- 28 maggio 2017
- 24 ottobre 2017
gnasher729 ha detto: Questo è abbastanza all'oscuro. Il problema è che l'OP non conosce una caratteristica di base di Swift, ovvero i valori facoltativi. Il costruttore Double(String) può ovviamente fallire se la String non contiene un numero. Ecco perché Double (String) non produce e non può produrre un risultato di tipo Double, ma uno di tipo Double? , questo è un Double opzionale. E un Double opzionale non può essere paragonato a un Int.
Sei stato vittima di bullismo a scuola? Sembri avere un'autostima piuttosto bassa perché non hai potuto rispondere senza attaccarmi.
Questa sarà la mia prima e ultima comunicazione con te. Suggerimento per te: prova a comunicare in modo più civile e la vita sarà fantastica. Stai attento.
verde
- 15 luglio 2015
- Fort Worth
- 25 ottobre 2017
gnasher729 ha detto: Il modo corretto è controllare l'errore. Per esempio
se sia d = Double (MyValue), d > 10 {
// MyValue conteneva un numero e il numero è > 10.
} altro {
// MyValue non conteneva un numero o il numero era<= 10.
}
Questo è ambiguo - e se il valore fosse?<= 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.
Un modo molto più pulito sarebbe:
Codice: |_+_|
Tuttavia, penso davvero che MyValue dovrebbe essere archiviato come Double fin dall'inizio e un NumberFormatter implementato in seguito per gestire qualsiasi formattazione necessaria. Questo ha un carico cognitivo molto più basso per chi finisce per leggere il codice.
gnasher729
Sospeso
- 25 novembre 2005
- 26 ottobre 2017
maculateConception ha detto: Sei stato vittima di bullismo a scuola? Sembri avere un'autostima piuttosto bassa perché non hai potuto rispondere senza attaccarmi.
Questa sarà la mia prima e ultima comunicazione con te. Suggerimento per te: prova a comunicare in modo più civile e la vita sarà fantastica. Stai attento.
Beh, non ti ho attaccato. Ho attaccato il tuo post, che dimostra che sai molto poco di Swift, e ho incluso una raccomandazione molto pericolosa. S
SAIRUS
a
- 21 agosto 2008
- 26 ottobre 2017
inserire
- 14 aprile 2018
- 14 aprile 2018
1) '!' puoi indicare che questo valore sarà esatto int aggiungendo il segno.
Codice: |_+_| 2) È possibile specificare il tipo quando si definisce il valore.
Codice: |_+_| A
imprese
- 28 gennaio 2006
- 27 aprile 2018
ynstek ha detto: Swift, non è sicuro che il tuo valore sia esattamente int. Ci sono due opzioni per essere sicuri.
1) '!' puoi indicare che questo valore sarà esatto int aggiungendo il segno.
Codice: |_+_| 2) È possibile specificare il tipo quando si definisce il valore.
Codice: |_+_|
Penso che il tuo esempio n. 2 fallirebbe perché stai cercando di assegnare un cast di stringa a un doppio a una variabile Int. Inoltre, stai assumendo che MyValue non sia nullo, il che potrebbe causare un errore di runtime se fosse nullo o non numerico.
Neanche la tua spiegazione di esempio n. 1 è corretta. Un punto esclamativo non converte un valore in un Int. Scarta il valore di una variabile facoltativa. Nel tuo esempio, ti ritroverai con un valore Double, non un Int, e solo se MyValue non fosse zero o un valore non numerico.
Messaggi Popolari