Wyliczenia Swift mają wartości powiązane i nieprzetworzone. Ale przypadki użycia tych wartości nie są dla mnie jasne. Byłbym bardzo wdzięczny, gdyby ktoś mógł wyjaśnić różnicę między wartościami skojarzonymi i surowymi, przykład byłby bardzo pomocny.Różnica między wartościami skojarzonymi i nieprzetworzonymi w wyliczeniach szybkich
Odpowiedz
Surowe wartości są stosowane, gdy każdy przypadek w wyliczeniu jest reprezentowany przez wartość ustawioną podczas kompilacji. Są podobne do stałych, tj
let A = 0
let B = 1
jest podobny do:
enum E: Int {
case A // if you don't specify, IntegerLiteralConvertible-based enums start at 0
case B
}
Więc A
ma stałą wartość surowego 0
, B
z 1
etc ustawiony w czasie kompilacji. Wszystkie muszą być tego samego typu (typ wartości nieprzetworzonej dotyczy całego wyliczenia, a nie każdego pojedynczego przypadku). Mogą to być wyłącznie łańcuchy, znaki lub liczby, które można zamienić na literalne. I wszystkie muszą być odrębne (żadne dwa wyliczenia nie mogą mieć tej samej wartości nieprzetworzonej).
wartości związane są bardziej zmienne, związane z jednej przypadków liczby:
enum E {
case A(Int)
case B
case C(String)
}
Tutaj A
ma teraz skojarzony Int
która może pomieścić żadnej wartości całkowitą. B
z drugiej strony nie ma żadnej wartości skojarzonej. I C
ma skojarzony String
. Powiązane typy mogą być dowolnego typu, a nie tylko ciągami lub liczbami.
Każda podana wartość typu E
będzie posiadać zawsze tylko jeden z odpowiedniego typu, to znaczy zarówno Int
jeśli wyliczenia jest A
lub String
jeśli wyliczenia jest C
. Potrzebuje tylko wystarczająco dużo miejsca na większy z nich. Typy takie jak te są czasami określane jako "dyskryminowane związki" - związek będący zmienną, która może posiadać wiele różnych typów, ale wiesz (z przypadku enum), którą trzyma.
Mogą nawet być ogólne. Najbardziej powszechnym przykładem jest Optional
, który jest zdefiniowany w następujący sposób:
enum Optional<T> {
case .Some(T)
case .None
}
jeśli jest to podobne: 'case A (orderNumber: Int, account: String)' jaki byłby wtedy powiązany typ? krotka na Int, String? – Honey
@Honey "Zdefiniuj typ wyliczeniowy o nazwie Kod kreskowy, który może przyjmować wartość upc z powiązaną wartością typu (Int, Int, Int, Int) lub wartością qrCode z powiązaną wartością typu String." https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html – Sakshi
- 1. Różnica między wartościami Enum.GetValues i Enum.GetNames
- 2. Różnica między wartościami @GeneratedValue i @GenericGenerator
- 3. Przeciążanie operatora równości w szybkich podsumowaniach z powiązanymi wartościami
- 4. Jaka jest różnica między wartościami cvtype w OPENCV?
- 5. Wyświetlanie Różnica między dwiema wartościami datetime w godzinach
- 6. Jaka jest różnica między Equinox i Virgo?
- 7. Różnica między wartościami odwzorowanymi a transformacją na mapie
- 8. Różnica kolorów/podobieństwo% między dwiema wartościami z JS
- 9. Różnica między $ @ i $! w perl
- 10. Różnica między "i" w Lua
- 11. Java Map między parami i wartościami
- 12. MySQL: Różnica między ",", "i"
- 13. Composer.phar różnica między | i ||
- 14. Różnica między | = i^= css
- 15. Różnica między "% ~ dp0" i ". \"?
- 16. Różnica między ". +" I ". +?"
- 17. Różnica między unwrapObservable i()
- 18. Różnica między "**/* /" i "** /"?
- 19. Różnica między (++ i) oraz (i ++)
- 20. Czy jest jakaś różnica między wartościami typu BOOL i wartością logiczną w obiekcie Objective-C?
- 21. "Wartość raw dla enum case nie jest unikalna" dla wyliczenia Swift z wartościami nieprzetworzonymi Float
- 22. Różnica kręgosłupa Różnica między CompositeView i CollectionView?
- 23. Jaka jest różnica między "as string" i "stringvalue" w swift?
- 24. Dzielenie ciągu znaków i przechodzenie między wartościami w procedurze MySql
- 25. Konflikt nazw między wartościami pól i zakresu lokalnego w Haskell
- 26. Różnica między org.apache.spark.ml.classification i org.apache.spark.mllib.classification
- 27. Różnica między fgets i fscanf?
- 28. Różnica między PyMODINIT_FUNC i PyModule_Create
- 29. Różnica między ParameterInfo.DefaultValue i ParameterInfo.RawDefaultValue
- 30. Różnica między DatagramSocket i DatagramChannel
http://www.allinterview.com/showanswers/191460/in-swift-enumerations-s-difference-between-raw-values i-related-values.html – sasquatch