스위프트 - 열거형
예시 :
enum CompassPoint {
case north
case south
case east
case west
}
예시 :
enum CompassDirection: CaseIterable {
case north, south, east, west
}
for direction in CompassDirection.allCases {
//body
}
관련 값
케이스 값과 함께 저장되는 모든 유형의 값(추가 정보)입니다. 연관된 값은 모든 유형이 될 수 있으며 값 유형은 케이스마다 다를 수 있습니다. 열거형의 각 인스턴스는 동일한 유형에 대해 서로 다른 연관된 값을 가질 수 있습니다.
예시 :
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
var productBarcode = Barcode.upc(8, 85909, 51226, 3)
productBarcode = .qrCode("ABCDEFGHIJKLMNOP")
switch productBarcode {
case .upc(let numberSystem, let manufacturer, let product, let check):
print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).")
case .qrCode(let productCode):
print("QR code: \(productCode).")
}
원시 값
열거형 케이스는 모두 동일한 유형인 원시 값이라는 기본값으로 미리 채워질 수 있습니다. 각 원시 값은 열거 선언 내에서 고유해야 합니다. 특정 열거 케이스의 원시 값은 항상 동일합니다.
예시 :
enum ASCIIControlCharacter: Character {
case tab = "\t"
case lineFeed = "\n"
case carriageReturn = "\r"
}
예시 :
enum Planet: Int {
case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
}
예시 :
let earthsOrder = Planet.earth.rawValue // earthsOrder is 3
예시 :
let possiblePlanet = Planet(rawValue: 7) //optional(Planet.uranus)
원시 값 이니셜라이저는 실패할 수 있는 이니셜라이저입니다.
재귀 열거
재귀 열거형은 하나 이상의 열거 사례에 대한 연결된 값으로 열거형의 다른 인스턴스가 있는 열거형입니다. 열거형 케이스 앞에 간접적으로 써서 열거형 케이스가 재귀적임을 나타냅니다.
예시 :
enum ArithmeticExpression {
case number(Int)
indirect case addition(ArithmeticExpression, ArithmeticExpression)
indirect case multiplication(ArithmeticExpression, ArithmeticExpression)
}
// (5 + 4) * 2:
let five = ArithmeticExpression.number(5)
let four = ArithmeticExpression.number(4)
let sum = ArithmeticExpression.addition(five, four)
let product = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2))
func evaluate(_ expression: ArithmeticExpression) -> Int {
switch expression {
case let .number(value):
return value
case let .addition(left, right):
return evaluate(left) + evaluate(right)
case let .multiplication(left, right):
return evaluate(left) * evaluate(right)
}
}
print(evaluate(product)) // Prints "18"
Reference
이 문제에 관하여(스위프트 - 열거형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/naveenragul/swift-enumerations-jd7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)