Comments 5
Все-таки это скорее не перечисления, а вариантные типы или тегированные объединения. Еще названия - "алгебраический тип" (так и не понял смысл названия) или "тип-сумма" (в противоположность "типу-произведению" - обычной структуре).
В Swift это всё называется просто перечислением (enumeration), поэтому этот термин и использовался. То что оно является алгебраическим типом, согласен. Одно другому не мешает.
так и не понял смысл названия
Насколько я понимаю они называются так потому что, если обозначить через | |
операцию, которая возвращает количество возможных значений для некоторого типа A (|A|
), то мы получим:
- |A | B| = |A| + |B|
, где A | B
- это тип суммы;
- |A B| = |A| * |B|
, где A B
- это тип произведения.
Например: |Bool| = 2
, а |Unit| = 1
. Тогда |Bool | Unit| = 2 + 1 = 3
; |Bool Unit| = 2 * 1 = 2
.
ImplStrategy.singleton.rawValue == ImplStrategy(rawValue: "Resilent") // true
Похоже на опечатку и имелось в виду
ImplStrategy.resilent == ImplStrategy(rawValue: "Resilent") // true
Немного о перечислениях в Swift