본문으로 건너뛰기

struct 초기화 & escaping closure

struct Item: View {
private let product: StoreUserProduct
private let isSelected: Bool
private let onSelect: () -> Void

public init(
_ product: StoreUserProduct,
isSelected: Bool,
onSelect: @escaping () -> Void
) {
self.product = product
self.isSelected = isSelected
self.onSelect = onSelect
}

@Binding 초기화

struct Item: View {
@Binding private let isOn: Bool

public init(
_ isOn: isOn,
) {
self._isOn = isOn
}

@escaping 생략

closure가 1개라면 init()에서 생략해서 표현 가능

struct Item: View {
public let onChange: (String) -> Void // == init(onChange: @escaping (String) -> Void)
}

struct View: View {
...
var body: some View {
Item { dispatch($0) } // 축약형
}
}