import SwiftUI
enum IconType {
case home, search, messages
}
struct Icon: View {
var type: IconType
var body: some View {
Group { () -> Image in
switch type {
case .search:
return Image(systemName: "magnifyingglass")
case .messages:
return Image(systemName: "envelope")
default: // .home
return Image(systemName: "house")
}
}
}
}
Group { () -> Image in
のように書けば DSL ではなく通常のクロージャとなって switch が書ける。ってか何でも書ける。自由度が一気に上がって責任も大きくなるので要注意なテクニック。
追記:
もっと手抜きするならこう。
struct Icon: View {
var type: IconType
var body: Image {
switch type {
case .search:
return Image(systemName: "magnifyingglass")
case .messages:
return Image(systemName: "envelope")
default: // .home
return Image(systemName: "house")
}
}
}