Skip to content

Instantly share code, notes, and snippets.

@jemygraw
Created June 14, 2015 08:31
Show Gist options
  • Save jemygraw/3430739c4b4c5069a7a3 to your computer and use it in GitHub Desktop.
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
//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