SlideShare a Scribd company logo
1 of 28
Download to read offline
Property Wrappers
willSet
/
didSet
Property
Wrappers&
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
@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>
>
> defer
_
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

More from Tomohiro Kumagai

iOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftiOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftTomohiro Kumagai
 
Around the 変数 let #love_swift
Around the 変数 let #love_swiftAround the 変数 let #love_swift
Around the 変数 let #love_swiftTomohiro Kumagai
 
もくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Nightもくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販NightTomohiro Kumagai
 
みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′Tomohiro Kumagai
 
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswiftmacOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswiftTomohiro Kumagai
 
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftみんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftTomohiro Kumagai
 
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #iosconGetting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #iosconTomohiro Kumagai
 
みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′Tomohiro Kumagai
 
みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′Tomohiro Kumagai
 
勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017Tomohiro Kumagai
 
みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料Tomohiro Kumagai
 
Protocol-Oriented Integers に想うジェネリックプログラミングの未来
Protocol-Oriented Integers に想うジェネリックプログラミングの未来Protocol-Oriented Integers に想うジェネリックプログラミングの未来
Protocol-Oriented Integers に想うジェネリックプログラミングの未来Tomohiro Kumagai
 
技術系同人誌を書こう #love_swift #devsap
技術系同人誌を書こう #love_swift #devsap技術系同人誌を書こう #love_swift #devsap
技術系同人誌を書こう #love_swift #devsapTomohiro Kumagai
 
報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup
報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup
報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetupTomohiro Kumagai
 
Swift Open Hours 4 #love_swift #cocoa_kansai
Swift Open Hours 4 #love_swift #cocoa_kansaiSwift Open Hours 4 #love_swift #cocoa_kansai
Swift Open Hours 4 #love_swift #cocoa_kansaiTomohiro Kumagai
 
yidev 第28回 — 第3部 Final Party ! オープニング
yidev 第28回 — 第3部 Final Party ! オープニングyidev 第28回 — 第3部 Final Party ! オープニング
yidev 第28回 — 第3部 Final Party ! オープニングTomohiro Kumagai
 
みんなで Swift 復習会での談笑用スライド – 8th
みんなで Swift 復習会での談笑用スライド – 8thみんなで Swift 復習会での談笑用スライド – 8th
みんなで Swift 復習会での談笑用スライド – 8thTomohiro Kumagai
 
Protocol-Oriented Integers #cswift
Protocol-Oriented Integers #cswiftProtocol-Oriented Integers #cswift
Protocol-Oriented Integers #cswiftTomohiro Kumagai
 
みんなで Swift 復習会 GO! in 沖縄・発表資料
みんなで Swift 復習会 GO! in 沖縄・発表資料みんなで Swift 復習会 GO! in 沖縄・発表資料
みんなで Swift 復習会 GO! in 沖縄・発表資料Tomohiro Kumagai
 
みんなで Swift 復習会 GO! in 沖縄・オープニング
みんなで Swift 復習会 GO! in 沖縄・オープニングみんなで Swift 復習会 GO! in 沖縄・オープニング
みんなで Swift 復習会 GO! in 沖縄・オープニングTomohiro Kumagai
 

More from Tomohiro Kumagai (20)

iOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftiOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swift
 
Around the 変数 let #love_swift
Around the 変数 let #love_swiftAround the 変数 let #love_swift
Around the 変数 let #love_swift
 
もくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Nightもくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Night
 
みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′
 
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswiftmacOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
 
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftみんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
 
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #iosconGetting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
 
みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′
 
みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′
 
勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017
 
みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料
 
Protocol-Oriented Integers に想うジェネリックプログラミングの未来
Protocol-Oriented Integers に想うジェネリックプログラミングの未来Protocol-Oriented Integers に想うジェネリックプログラミングの未来
Protocol-Oriented Integers に想うジェネリックプログラミングの未来
 
技術系同人誌を書こう #love_swift #devsap
技術系同人誌を書こう #love_swift #devsap技術系同人誌を書こう #love_swift #devsap
技術系同人誌を書こう #love_swift #devsap
 
報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup
報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup
報告! 夏コミで新刊『swift らしい表現を目指そう』を頒布しました! #techbook_meetup
 
Swift Open Hours 4 #love_swift #cocoa_kansai
Swift Open Hours 4 #love_swift #cocoa_kansaiSwift Open Hours 4 #love_swift #cocoa_kansai
Swift Open Hours 4 #love_swift #cocoa_kansai
 
yidev 第28回 — 第3部 Final Party ! オープニング
yidev 第28回 — 第3部 Final Party ! オープニングyidev 第28回 — 第3部 Final Party ! オープニング
yidev 第28回 — 第3部 Final Party ! オープニング
 
みんなで Swift 復習会での談笑用スライド – 8th
みんなで Swift 復習会での談笑用スライド – 8thみんなで Swift 復習会での談笑用スライド – 8th
みんなで Swift 復習会での談笑用スライド – 8th
 
Protocol-Oriented Integers #cswift
Protocol-Oriented Integers #cswiftProtocol-Oriented Integers #cswift
Protocol-Oriented Integers #cswift
 
みんなで Swift 復習会 GO! in 沖縄・発表資料
みんなで Swift 復習会 GO! in 沖縄・発表資料みんなで Swift 復習会 GO! in 沖縄・発表資料
みんなで Swift 復習会 GO! in 沖縄・発表資料
 
みんなで Swift 復習会 GO! in 沖縄・オープニング
みんなで Swift 復習会 GO! in 沖縄・オープニングみんなで Swift 復習会 GO! in 沖縄・オープニング
みんなで Swift 復習会 GO! in 沖縄・オープニング
 

Property Wrappers の特徴を眺める #swiftzoomin