🦋
SwiftUI: Optionalな値がアンラップできた時だけmodifierを適用する
便利な拡張を考えました。
extension View {
@ViewBuilder
func ifLet<Content: View, T: Any>(
_ optionalValue: T?,
transform: (Self, T) -> Content
) -> some View {
if let value = optionalValue {
transform(self, value)
} else {
self
}
}
}
上記の.ifLet(_:transform:)
を使うことで、Optionalな値がアンラップできた時だけmodifierを適用できます。
struct HogeView: View {
@State var color: Color? = nil
var body: some View {
Text("Hello World")
.ifLet(color) { $0.foregroundColor($1) }
}
}
Discussion