From b55bf7de920f3ca77a9c264e1ea1fc8071ddc110 Mon Sep 17 00:00:00 2001 From: "Peter J. Keleher" <keleher@cs.umd.edu> Date: Tue, 7 Sep 2021 14:23:40 -0400 Subject: [PATCH] auto --- demos/03_demo.md | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 demos/03_demo.md diff --git a/demos/03_demo.md b/demos/03_demo.md new file mode 100644 index 0000000..fbc8497 --- /dev/null +++ b/demos/03_demo.md @@ -0,0 +1,97 @@ +``` +func changeB(a:String, b: inout String) { + b = "\(a)\(b)" +} +var s="this" +changeB(a:"changing ", b:&s) +print(s) + + + +//===================================================================== + +func outer() -> (Int) -> Int { + var incr = 0 + func inner(_ a:Int) -> Int { + incr += 1 + return a+incr + } + return inner + } +let x = outer() +x(33) + +//===================================================================== + +Array::sorted(by: (T,T)->Bool) + + let nums = [7,5,14,12,16] + + // Sort with inferred types + let snums = nums.sorted(by:{a,b in a>b}) + + // Sort with positional parameters + let snums2 = nums.sorted(by:{$0>$1}) + + // Sort with function name + let snums3 = nums.sorted(by:>) + + // Sort with a trailing closure + let snums4 = nums.sorted() {$0>$1} + + // Sort with parentheses omitted + let snums5 = nums.sorted {$0>$1} + +//===================================================================== + + +enum Earthsea: CaseIterable { + case AWizardOfEarthsea + case TheTombsOfAtuan + case TheFarthestShore + case Tehanu +} + +for book in Earthsea.allCases { + print(book) +} + +//===================================================================== + +struct Point { + var x: Int = 0 + var y: Int = 0 +} +let p = Point(x:3, y: 4) +let p2 = Point(x:4, y: 5) + +enum Shape { + case circle(center:Point, radius:Double) + case rect(lowerLeft:Point, upperRight:Point) +} + +let s = Shape.circle(center:p, radius:1.5) + +switch s { + case .circle(let c, let r): + print("It's a circle \(c) \(r)") + + case let .rect(ll, ur): + print("Just a rect \(ll) \(ur)") + + default: + print("default") +} + +let sr = Shape.rect(lowerLeft: p, upperRight: p2) +switch sr { + case .circle(let c, let r): + print("It's a circle \(c) \(r)") + + case let .rect(ll, ur): + print("Just a rect \(ll) \(ur)") + + default: + print("default") +} +``` -- GitLab