Skip to content

Instantly share code, notes, and snippets.

@qmchenry
Created April 14, 2016 18:59
Show Gist options
  • Save qmchenry/e206e44999c140034c5d6b130af5b827 to your computer and use it in GitHub Desktop.
Save qmchenry/e206e44999c140034c5d6b130af5b827 to your computer and use it in GitHub Desktop.
Lightweight generic cache
//
// ThinCache.swift
// Planned
//
// Created by Quinn McHenry on 4/10/16.
// Copyright © 2016 Quinn McHenry. All rights reserved.
//
final class ThinCache<T> {
private var cached: Optional<T>
let generator: Void -> T
init(generator: Void -> T) {
self.generator = generator
}
func generate() -> T {
let t = generator()
cached = t
return t
}
func invalidate() {
cached = nil
}
var value: T {
get {
guard let cached = cached else { return generate() }
return cached
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment