使用SwiftUI中ForEach中的Enum关联值



我希望我的enum是可识别的,所以做了这个代码:

enum ShapeEnum: Identifiable {
case rectangle(size: CGSize, color: Color, id: UUID = UUID())
case circle(size: CGFloat, color: Color, id: UUID = UUID())

var id: UUID {
return self.id
}
}

但是Xcode显示了交战:

函数调用导致无限递归

不知道为什么或如何我可以做得更好,但我的代码应该只是工作我想…但是我把代码改成:

var id: UUID {
switch self {
case .rectangle(_, _, let id):
return id
case .circle(_, _, let id):
return id
}
}

但是我看起来不太好,我想,我只需要返回id,我不需要做(_,_,let id),所以我怎么能做得更好?

下面的内容似乎可以工作:

enum ShapeEnum: Identifiable {
case rectangle(size: CGSize, color: Color, id: UUID = UUID())
case circle(size: CGSize, color: Color, id: UUID = UUID())
var id: UUID {
switch self {
case .rectangle(_, _, let id), .circle(_, _, let id):
return id
}
}
}
let circle: ShapeEnum = .circle(size: .zero, color: Color.accentColor)
let rectangle: ShapeEnum = .circle(size: .zero, color: Color.accentColor)

只是在switch语句中添加了一点差异,但基本上是一样的,也是我能想到的最好的。

编辑:枚举很酷。

最新更新