狠狠撸

狠狠撸Share a Scribd company logo
Property Wrappers
willSet
/
didSet
Property
Wrappers&
Property Wrappers の特徴を眺める #swiftzoomin
willSet didSet
@propertyWrapper
wrappedValue
@propertyWrapper
struct PassThrough<Value> {
var wrappedValue: Value
init(wrappedValue value: Value) {
wrappedValue = value
}
}
@型名
wrappedValue
struct Data {
@PassThrough var value: Int
}
Object
@XXX
var value: YYY
@propertyWrapper XXX
init(wrappedValue:)
var wrappedValue
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
@propertyWrapper
struct Sorting<Element:Comparable> {
private var elements: [Element]
init(wrappedValue: [Element]) {
elements = wrappedValue
}
var wrappedValue: [Element] {
get { elements }
set { elements = newValue.sorted() }
}
}
@Sorting var values: [Int] = []
var values: [Int] = [] {
didSet {
values = values.sorted()
}
}
struct OrderedArray<Element : Comparable> {
private(set) var elements: [Element]
public init() {
elements = []
}
mutating
func append(_ element: Element) {
elements =
(elements + [element]).sorted()
}
}
var values: OrderedArray<Int>
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
>
> defer
Property Wrappers の特徴を眺める #swiftzoomin
_
A Type
@Sorting var values: [Int]
private
var _values: Sorting<Int>
@propertyWrapper
extension Sorting {
func ascending -> [Element] {
elements.sorted(by: <)
}
}
A Type
@Sorting var values: [Int]
func XXXX() {
_values.sorted(by: .ascending)
@propertyWrapper
struct Sorting<Element> {
init(wrappedValue: [Element], order: Order) {
}
A Type
@Sorting(order: .descending) var values: [Int] = []
@propertyWrapper
struct Sorting<Element> {
init() {
elements = []
}
A Type
@Sorting var values: [Int]
$
A Type
@Sorting var values: [Int]
private
var $values: SomeType
@propertyWrapper
struct Sorting<Element> {
var projectedValue: SomeType {
}
Property Wrappers の特徴を眺める #swiftzoomin

More Related Content

Property Wrappers の特徴を眺める #swiftzoomin