Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
struct Counter {
internal var countKeeper: CountKeeper
init(countKeeper: CountKeeper = RealTimeCounter()) {
self.countKeeper = countKeeper
}
private var start: Double?
private var totalCount: Double = 0
var isCounterRunning: Bool {
return start != nil
}
var incrementedCount: Double {
return totalCount + (start.map {_ in countKeeper.count } ?? 0)
}
mutating func startCounter() {
start = countKeeper.count
}
mutating func pauseCounter() {
totalCount = incrementedCount
start = nil
}
mutating func resetCounter() {
start = nil
totalCount = 0
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment