Unnamed repository; edit this file 'description' to name the repository.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import Foundation

protocol Shape {
  var area: Double { get }
  func describe() -> String
}

class Rectangle: Shape {
  var width: Double
  var height: Double

  var area: Double {
    return width * height
  }

  var perimeter: Double {
    get {
      return 2 * (width + height)
    }
    set {
      width = newValue / 4
    }
  }

  var observed: Int = 0 {
    willSet {
      print(newValue)
    }
    didSet {
      print(oldValue)
    }
  }

  init(width: Double, height: Double) {
    self.width = width
    self.height = height
  }

  func describe() -> String {
    return "rectangle"
  }

  func compute<T: Numeric>(values: [T]) -> [T] {
    let doubled = values.map { value in
      return value + value
    }
    return doubled
  }
}

enum Direction {
  case north
  case south
  case east
  case west
}

func process(_ direction: Direction, count: Int) {
  guard count > 0 else {
    return
  }

  let numbers = [
    1,
    2,
    3,
  ]

  let mapping = [
    "a": 1,
    "b": 2,
  ]

  for number in numbers {
    if number > 1 {
      print(number)
    } else if number == 1 {
      print("one")
    } else {
      print("zero")
    }
  }

  var index = 0
  while index < count {
    index += 1
  }

  repeat {
    index -= 1
  } while index > 0

  switch direction {
    case .north:
      let label = "up"
      print(label)
    case .south where count > 5:
      print("down")
    default:
      print("side")
  }

  let result = compute(width: 10,
    height: 20)
  print(result)
}

let multi = """
unindented
  indented
"""