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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

h{PcjY+y5I@DJ-xJZI02i=(&FKZn!~0FQ69} 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 EA6;=D?EnA( -- 2.47.0