Le enumerazioni Swift hanno sia valori associati sia valori non elaborati. Ma i casi d'uso di questi valori non mi sono chiari. Quindi sarei davvero grato se qualcuno potesse spiegare la differenza tra i valori associati e grezzi, un esempio sarebbe molto utile.Differenza tra valori associati e grezzi nelle enumerazioni rapide
risposta
I valori non elaborati si riferiscono a quando ogni caso nell'enumerazione è rappresentato da un valore impostato in fase di compilazione. La sono simili alle costanti, cioè
let A = 0
let B = 1
è simile a:
enum E: Int {
case A // if you don't specify, IntegerLiteralConvertible-based enums start at 0
case B
}
Quindi, A
ha un valore grezzo fisso di 0
, B
di 1
ecc impostato al momento della compilazione. Devono essere tutti dello stesso tipo (il tipo del valore grezzo è per l'intero enum, non per ogni singolo caso). Possono essere solo stringhe, caratteri o numeri letterali-convertibili. E devono essere tutti distinti (non è possibile che due enumerazioni abbiano lo stesso valore grezzo).
valori associati sono più come variabili associate con uno dei casi enumerazione:
enum E {
case A(Int)
case B
case C(String)
}
Qui, A
ora ha associato un Int
che può contenere qualsiasi valore intero. B
d'altra parte, non ha alcun valore associato. E C
ha associato String
. I tipi associati possono essere di qualsiasi tipo, non solo stringhe o numeri.
Qualsiasi valore determinato di tipo E
sarà sempre e solo contenere uno dei tipi associati, cioè o un Int
se l'enumerazione è un A
, o un String
se l'enumerazione è un C
. Ha solo bisogno di spazio sufficiente per il più grande dei due. Tipi come questo sono a volte indicati come "unioni discriminate": un'unione è una variabile che può contenere più tipi diversi, ma tu sai (dal caso enum) quale tiene.
Possono anche essere generici. L'esempio più comune dei quali è Optional
, che è definito così:
enum Optional<T> {
case .Some(T)
case .None
}
se è come: 'caso A (orderNumber: Int, account: String)' quale sarebbe il tipo associato allora? una tupla su Int, String? – Honey
@Honey "Definire un tipo di enumerazione denominato Barcode, che può assumere un valore di upc con un valore associato di tipo (Int, Int, Int, Int) o un valore di qrCode con un valore associato di tipo String." https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html – Sakshi
- 1. Qual è la limitazione esatta dei valori associati generici nelle enumerazioni Swift?
- 2. "<-" e valori associati
- 3. Differenza tra stringa e testo nelle guide?
- 4. differenza tra i valori() e solo()
- 5. Differenza tra $ 1 e $ e nelle espressioni regolari
- 6. Qual è la differenza tra i tipi di dati grezzi lunghi e lunghi in Oracle?
- 7. C# Enumerazioni e valori duplicati - pericoli?
- 8. Come creare un predicato per filtrare array di enumerazioni con valori associati in Swift?
- 9. Come implementare le enumerazioni di tipo Swift con i valori associati in JavaScript?
- 10. Differenza tra var e questo nelle funzioni Javascript?
- 11. Differenza tra file helper e file lib nelle guide
- 12. Differenze tra le enumerazioni scala e java
- 13. Differenza tra $ @ e $! in perl
- 14. Visual Studio 2015 RC mancante utilizzando l'opzione nelle azioni rapide
- 15. enumerazioni Flag senza potenza di due valori
- 16. Python - rappresentazione efficiente di pixel e valori associati
- 17. SQL - Differenza tra COALESCE e ISNULL?
- 18. Differenza tra hash() e id()
- 19. Interfacce e enumerazioni
- 20. Calcola la distanza tra due puntatori grezzi
- 21. Differenza tra più valori e tuple semplici in Racket?
- 22. Qual è la differenza tra costruttori di valori e tuple?
- 23. Differenza tra Interceptor e Filtri - È giusto?
- 24. Discrepanza tra Eclipse compilatore e javac - enumerazioni, interfacce e generici
- 25. Differenza tra nuovo e override?
- 26. Differenza tra Tries e Trees?
- 27. Differenza tra OnlyOnRanToCompletion e NotOnFaulted?
- 28. Differenza tra Enum.GetValues e Enum.GetNames
- 29. Differenza tra EOT lite e EOT compresso
- 30. differenza tra __u8 e uint8_t
http://www.allinterview.com/showanswers/191460/in-swift-enumerations-s-difference-between-raw-values -and-associated-values.html – sasquatch