From f19f6380ca4860c4381407b81c03de9ff01c108f Mon Sep 17 00:00:00 2001 From: Ace Date: Wed, 22 Jun 2016 12:53:20 +0800 Subject: [PATCH] enumerations --- .../Contents.swift | 104 ++++++++++++++++++ .../AcePlay.playground/contents.xcplayground | 1 + .../UserInterfaceState.xcuserstate | Bin 14532 -> 14660 bytes 3 files changed, 105 insertions(+) create mode 100644 learn/AcePlay/AcePlay.playground/Pages/Enumerations.xcplaygroundpage/Contents.swift diff --git a/learn/AcePlay/AcePlay.playground/Pages/Enumerations.xcplaygroundpage/Contents.swift b/learn/AcePlay/AcePlay.playground/Pages/Enumerations.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..34b3a91 --- /dev/null +++ b/learn/AcePlay/AcePlay.playground/Pages/Enumerations.xcplaygroundpage/Contents.swift @@ -0,0 +1,104 @@ +//: [Previous](@previous) + +import UIKit + +enum CompassPoint { + case North + case East + case South + case West +} + +var directionToHead = CompassPoint.North +directionToHead = .East + +switch directionToHead { + case .North: print("Losts of Plantes Have a North") + case .East : print("Where the Sun Rises") + case .South: print("Watch Out for Penguins") + case .West : print("Where the Skies are Blue") +} + + +// Associated Values +printLine("Enumeration Associated Values") +enum BarCode { + case UPCA(Int, Int, Int, Int) + case QRCode(String) +} + +var productBarCode = BarCode.UPCA(8, 88488, 66366, 2) +productBarCode = .QRCode("QRCode-123456") + +switch productBarCode { +case let .UPCA(numberSystem, manufacturer, product, check) : + print("UPC-A: \(numberSystem), \(manufacturer), \(product), \(check)") +case let .QRCode(productCode) : + print("QR Code: \(productBarCode)") +} + + +printLine("RawValues") +// Raw Values +enum ASCIIControlCharacter: Character { + case Tab = "\t" + case LineFeed = "\n" + case CarriageReturn = "\r" +} + +// Implicitly Assigned Raw Values +// 整型从0开始自增1,每个项的rawValue不能相同 +enum Planet: Int { + case Mercury + case Venus + case Earth + case Mars + case Jupiter + case Saturn + case Uranus + case Netpune +} + +print(Planet.Mercury, Planet.Mercury.rawValue) +print(Planet.Mars, Planet.Mars.rawValue) +print(Planet(rawValue: 5)!, Planet(rawValue: 5)!.rawValue) + + +// String型,每项默认为枚举项的字符串值 +enum CompassPointString: String { + case North + case East + case Sourth + case West +} + + +print(CompassPointString.North, CompassPointString.North.rawValue) +print(CompassPointString.East, CompassPointString.East.rawValue) +print(CompassPointString.Sourth,CompassPointString.Sourth.rawValue) +print(CompassPointString.West, CompassPointString.West.rawValue) + + +printLine("Resursive Enumerations") +// 不能忘记 indirect +indirect enum Exp { + case Number(Int) + case Add(Exp, Exp) // indirect 也可以放在case语句之前 + case Mul(Exp, Exp) +} + + +let exp = Exp.Mul(Exp.Add(Exp.Number(2), Exp.Number(5)), Exp.Number(7)) + +func evaluateExp(exp: Exp) -> Int { + switch exp { + case let .Number(n): + return n + case let .Add(a, b) : + return evaluateExp(a) + evaluateExp(b) + case let .Mul(a, b): + return evaluateExp(a) * evaluateExp(b) + } +} + +print(evaluateExp(exp)) diff --git a/learn/AcePlay/AcePlay.playground/contents.xcplayground b/learn/AcePlay/AcePlay.playground/contents.xcplayground index 90f7190..04644e5 100644 --- a/learn/AcePlay/AcePlay.playground/contents.xcplayground +++ b/learn/AcePlay/AcePlay.playground/contents.xcplayground @@ -4,5 +4,6 @@ + \ No newline at end of file diff --git a/learn/AcePlay/AcePlay.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/AcePlay/AcePlay.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate index 1bafc59b124ca6ef98ca7707abd10100e270d426..f12efa0bb7e9602b4f04d60e044dfebad40714b7 100644 GIT binary patch literal 14660 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 literal 14532 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 -- 2.44.0