Created
June 14, 2015 08:31
-
-
Save jemygraw/3430739c4b4c5069a7a3 to your computer and use it in GitHub Desktop.
learn about the swift type enum and its usage, hash value, raw value
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//enum | |
enum Rank :Int{ | |
case Ace = 1 | |
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten | |
case Jack, Queen, King | |
func desc() -> String{ | |
switch self{ | |
case .Ace: | |
return "ace" | |
case .Jack: | |
return "jack" | |
case .Queen: | |
return "queen" | |
case .King: | |
return "king" | |
default: | |
return String(self.rawValue) | |
} | |
} | |
} | |
let ace=Rank.Ace | |
let aceRawValue=ace.rawValue | |
let aceDesc=ace.desc() | |
let nine=Rank.Nine | |
let nineRawValue=nine.rawValue | |
let nineDesc=nine.desc() | |
func enumCmp(e1 :Rank, e2 :Rank) -> Int{ | |
return e1.rawValue - e2.rawValue | |
} | |
var cmpResult=enumCmp(ace, nine) | |
if cmpResult==0{ | |
println("\(ace.desc()) equal to \(nine.desc())") | |
}else if cmpResult>0{ | |
println("\(ace.desc()) bigger than \(nine.desc())") | |
}else{ | |
println("\(ace.desc()) smaller than \(nine.desc())") | |
} | |
let eight=Rank(rawValue : 8) | |
println(eight) | |
if let sevenRank = Rank(rawValue: 7){ | |
let sevenDesc=sevenRank.desc() | |
println(sevenDesc) | |
} | |
//enum hash value is the logic index | |
//enum raw value is defined by the raw type | |
//enum no specified raw value follows the hash value | |
//enum hash value is int | |
enum Suit :Float{ | |
case Spades | |
case Hearts, Diamonds, Clubs | |
func desc()->String{ | |
switch self{ | |
case .Spades: | |
return "spades" | |
case .Hearts: | |
return "hearts" | |
case .Diamonds: | |
return "diamonds" | |
case .Clubs: | |
return "clubs" | |
} | |
} | |
} | |
let hearts=Suit.Hearts | |
println(hearts.hashValue) | |
println(hearts.rawValue) | |
println(hearts.desc()) | |
let diamonds=Suit.Diamonds | |
println(diamonds.hashValue) | |
println(diamonds.rawValue) | |
println(diamonds.desc()) | |
//enum raw type can be of any type | |
enum Day : String{ | |
case Monday="Monday" | |
case Tuesday="Tuesday" | |
case Wednesday="Wednesday" | |
case Thursday="Thursday" | |
case Friday="Friday" | |
case Saturday="Saturday" | |
case Sunday="Sunday" | |
func desc()->String{ | |
return "\(self.hashValue)\t\(self.rawValue)" | |
} | |
} | |
var fri=Day.Friday | |
println(fri.desc()) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment