日記
ご飯ができたので雑
今日書いたコード
@propertyWrapper struct SmallNumber { private var number = 0 var projectedValue = false var wrappedValue: Int { get { return number } set { if newValue > 12 { number = 12 projectedValue = true } else { number = newValue projectedValue = false } } } } enum Size { case small, large } struct SizedRectangle { @SmallNumber var height: Int @SmallNumber var width: Int mutating func resize(to size: Size) -> Bool { switch size { case .small: height = 10 width = 20 case .large: height = 100 width = 100 } return $height || $width } } var sized = SizedRectangle() print(sized.resize(to: .large), sized.$width, sized.$height) print(sized.resize(to: .small), sized.$width, sized.$height) // => true true true // => true true false
初めて知ったこと
property wrapperはprojected valueを定義することで追加の機能を提供できる.上のコードの$
で始まるやつ.SwiftUIでやたら便利なやつの意味がわかった.これどっちが先なんだろう.