Skip to content

Instantly share code, notes, and snippets.

@ANSCoder
Created March 10, 2019 16:22
Show Gist options
  • Save ANSCoder/a9acc86635cf71876d398f8a4e049726 to your computer and use it in GitHub Desktop.
Save ANSCoder/a9acc86635cf71876d398f8a4e049726 to your computer and use it in GitHub Desktop.
Boxing in Swift 4.2
class Box<T>{
typealias Listener = (T) -> Void
var listener: Listener?
var value: T {
didSet{
listener?(value)
}
}
init(_ value: T) {
self.value = value
}
func bind(listener: Listener?){
self.listener = listener
listener?(value)
}
}
//Example for Use
let boxInt: Box<String> = Box("")
boxInt.value = "Bob"
boxInt.bind {
print("value chanage \($0)")
}
boxInt.value = "John"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment