【发布时间】:2018-07-04 21:01:45
【问题描述】:
我正在使用 Swift 4。
我想定义一个问题。
问题由问题和答案组成。
问题可能是以下任何一种:String、Int、[Int]、Image、[Image] 或一些未定义的新类型,或者可能是上述的某种组合。
答案也可能是上述任何一种,但给定的问题可以有不同类型的答案。
(例如问题=(图片,“这是什么类型的动物?),答案=(“一只猫”))
所以我认为协议是可行的方法:
protocol Posable {
var pose: String { get }
}
protocol Answerable: Hashable {
var answer: String { get }
}
protocol Puzzle {
var problem: Posable { get }
var solution: Answerable { get }
}
我制作 Answerable Hashable 是因为我希望能够比较答案并创建答案集。
但我得到了解决方案:可回答的行:
'Protocol 'Answerable' 只能用作通用约束,因为它具有 Self 或关联的类型要求。
我明白为什么会这样,但是......
任何人都可以就如何实现这一点提出任何建议,以免我遇到这个问题吗?
如果可能的话,我热衷于使用协议来实现,部分原因是为了了解它们。
【问题讨论】: