Skip to content

Instantly share code, notes, and snippets.

@nsomar
Last active September 24, 2016 00:14
Show Gist options
  • Save nsomar/61cab02c5f873ec0a853307ae1145b07 to your computer and use it in GitHub Desktop.
Save nsomar/61cab02c5f873ec0a853307ae1145b07 to your computer and use it in GitHub Desktop.
Implementing a counter as a function
// Impelentation Counter as a Function
typealias Mutators = () -> ()
typealias Getter = () -> Int
typealias Setter = (Int) -> ()
func Counter(number initial: Int) -> (getNumber: Getter, setNumber: Setter, increment: Mutators, decrement: Mutators) {
var v = initial
let getNumber = { return v }
let setNumber = { v = $0 }
let increment = { v += 1 }
let decrement = { v -= 1 }
return (
getNumber: getNumber,
setNumber: setNumber,
increment: increment,
decrement: decrement)
}
let c = Counter(number: 1)
print(c.getNumber())
c.increment()
print(c.getNumber())
c.decrement()
print(c.getNumber())
c.setNumber(20)
print(c.getNumber())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment