Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
03_demo.md 1.83 KiB
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")
}