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