下面是我拥有的一些枚举:
enum SlideTemplate : Equatable {
case centered(content: SlideContent)
case horizontalSplit(leftContent: SlideContent, rightContent: SlideContent)
case empty
static func == (lhs: SlideTemplate, rhs: SlideTemplate) -> Bool {
// not sure what to do here
}
}
enum SlideContent {
case text(content: String)
case image(content: UIImage)
}
struct Slide {
let template: SlideTemplate
}
现在我想检查幻灯片使用的模板类型。
func getSlideTemplate(slide: Slide) {
if slide.template == SlideTemplate.centered {
print("centered")
} else if slide.template == SlideTemplate.horizontalSplit {
print("horizontalSplit")
} else {
print("empty")
}
}
上面的函数显然不起作用。它声明:
“二元运算符'=='不能应用于类型为'SlideTemplate'和'(SlideContent, SlideContent)->SlideTemplate'的操作数”。
我不确定如何解决这个问题。我查了其他比较枚举的情况,但是我无法将它们应用到这个情况中。
SlideContent
也应该是可比较的(Equatable),以便进行完整比较(第一个代码段)。 - user28434'mstep