Closed1
Swiftにおけるenumの面白い挙動
こんな enum
があったとして
enum Sports: String {
case football
case baseball
case basketball
@available(iOS 16.0, *)
case volleyball
}
switch
した場合は、アノテーション無しでも volleyball
にアクセスできる
struct ContentsView: View {
let sports: Sports
var body: some View {
switch sports {
case .football, .baseball, .basketball:
HogeView()
case .volleyball:
FugaView()
}
}
}
この場合 case .volleyball:
内で @available(iOS 16.0, *)
が適用されている扱いになり、以下のようなコードでも問題なくビルドできる
enum Sports: String {
case football
case baseball
case basketball
@available(iOS 16.0, *)
case volleyball
}
struct ContentsView: View {
let sports: Sports
var body: some View {
switch sports {
case .football, .baseball, .basketball:
GeneralView(sports: sports)
case .volleyball:
VolleyballView()
}
}
}
struct GeneralView: View {
let sports: Sports
var body: some View {
Text(sports.rawValue)
}
}
@available(iOS 16.0, *)
struct VolleyballView: View {
var body: some View {
Text("Volleyball!!!")
}
}
このスクラップは2022/12/10にクローズされました