// Enumerations : Raw value
enum ASCIICharacterControl: Character {
case tab = "\t"
case lineFeed = "\n"
case carriageReturn = "\r"
}
print("test\(ASCIICharacterControl.tab.rawValue)tabtab\(ASCIICharacterControl.lineFeed.rawValue)...")
enum Planet:Int {
case sun=1,mercury,earth,mars,neptune,jupiter
}
print("\(Planet.sun),\(Planet.earth.rawValue)..")
enum CompassPoint: String {
case east,west,south,north
}
print("\(CompassPoint.east)..\(CompassPoint.west.rawValue)")
// Enumerations : Initializing
var position = 3
if let planetTmp = Planet(rawValue: position) {
switch planetTmp {
case .earth:
print("you choose \(planetTmp)")
default:
print("you choose other except earth:\(planetTmp)")
}
} else {
print("there is no planet with rawValue:\(position)")
}
//Recursive Enumerations : indirect
indirect enum ArithmethicExpression {
case number(Int)
case addition( ArithmethicExpression, ArithmethicExpression )
case multiply( ArithmethicExpression, ArithmethicExpression )
}
let one = ArithmethicExpression.number(1)
let three = ArithmethicExpression.number(3)
let sum = ArithmethicExpression.addition(one,three)
let multi = ArithmethicExpression.multiply(sum,three)
func calculate(_ val: ArithmethicExpression ) -> Int {
var ret : Int = 0
switch val {
case .number( let n ):
ret = n
case let .addition( a, b ):
ret = calculate(a) + calculate(b)
case let .multiply ( a, b ):
ret = calculate(a) * calculate(b)
default:
print("nothing \(val)")
}
return ret
}
print( calculate(sum))
print( calculate(multi))
2017년 2월 17일 금요일
Swift Enumerations : Raw value, Initializing, indirect
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기