Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
class BankAccount { private var _balance: Double = 0 // Computed property with get/set var balance: Double { get { _balance } set { guard newValue >= 0 else { return } _balance = newValue } } // Property observer var owner: String = "" { willSet { print("Changing owner from \(owner) to \(newValue)") } didSet { print("Owner changed from \(oldValue) to \(owner)") } } // Lazy property lazy var report: String = { "Account for \(owner): $\(balance)" }() func deposit(_ amount: Double) { guard amount > 0 else { return } _balance += amount } } // Property wrapper @propertyWrapper struct Clamped<T: Comparable> { var value: T let range: ClosedRange<T> var wrappedValue: T { get { value } set { value = min(max(range.lowerBound, newValue), range.upperBound) } } init(wrappedValue: T, _ range: ClosedRange<T>) { self.range = range self.value = min(max(range.lowerBound, wrappedValue), range.upperBound) } } struct Player { @Clamped(0...100) var health: Int = 100 } var player = Player() player.health = 150 print(player.health) // 100
Result
Open