250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- COMMIT
- listview
- UIAccessibility
- designPattern
- Leetcode
- tip
- GIT
- SwiftGen
- keyWindow
- it
- OSLog
- IOS
- swiftlint
- Widget
- algorithm
- dart
- pubspec
- xcode
- ToDoRim
- Equatable
- Swift
- enumerations
- basic
- reetcode
- Extentsion
- pubspec.yaml
- flutter
- protocol
- github
- toyproject
Archives
- Today
- Total
수니의 개발새발
[iOS/Swift/Basic] 열거형 Enumerations : 순환 열거형 - indirect 본문
728x90
반응형
📑 이전글
[iOS/Swift/Basic] 열거형 Enumerations : 원시값 Raw Values, 연관값 Associated Values
[iOS/Swift/Basic] 열거형 Enumerations : 항목 순회 - CaseIterable
순환 열거형 Recursive Enumerations
- 열거형(Enumerations)의 연관 값(Associated Values)이 열거형 자신의 값이고자 할 때 사용
- 이진 탐색 트리 등의 순한 알고리즘을 구현할 때 유용하게 사용 가능
indirect
순환 열거형(Recursive Enumerations)을 명시할 때 사용하는 키워드
indirect case
- 특정 항목(case)에만 한정
enum ArithmeticExpression {
case number(Int)
indirect case addition(ArithmeticExpression, ArithmeticExpression)
indirect case multiplication(ArithmeticExpression, ArithmeticExpression)
}
indirect enum
- 열거형(Enumerations) 전체에 적용
indirect enum ArithmeticExpression {
case number(Int)
case addition(ArithmeticExpression, ArithmeticExpression)
case multiplication(ArithmeticExpression, ArithmeticExpression)
}
- 순환 열거형(Recursive Enumerations)를 활용한 계산기 예제
// ArithmeticExpression 계산을 도와주는 Recursive Function
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)
}
}
func recurciveEnumerationsExample() {
let six = ArithmeticExpression.number(6)
let three = ArithmeticExpression.number(3)
let sum = ArithmeticExpression.addition(six, three)
let final = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2))
let result: Int = evaluate(final)
print("(6 + 3) * 2 = \(result)") // (6 + 3) * 2 = 18
}
🙋🏻♀️ 참고
야곰, ⌜스위프트 프로그래밍: Swift5⌟, 한빛미디어(2019)
728x90
반응형
'iOS - Swift' 카테고리의 다른 글
[iOS/Swift/Basic] 나머지 연산자 : % truncatingRemainder (0) | 2024.01.29 |
---|---|
[iOS/Swift/Basic] 열거형 Enumerations : 비교 가능한 열거형 - Comparable (0) | 2024.01.26 |
[iOS/Swift/Basic] 열거형 Enumerations : 항목 순회 - CaseIterable (2) | 2024.01.24 |
[iOS/Swift/Basic] 열거형 Enumerations : 원시값 Raw Values, 연관값 Associated Values (2) | 2024.01.24 |
[iOS/Swift/Basic] 컬렉션형(Array, Dictionary, Set) (0) | 2024.01.23 |
Comments