【发布时间】:2021-10-08 08:51:07
【问题描述】:
如何实现协议或替代解决方案,以在每种情况下都拥有参数的所有内容。类似League.teamA (.allCases)
import Cocoa
enum PlayerA: CaseIterable {
case center
case powerForward
case smallForward
}
enum PlayerB: CaseIterable {
case pointGuard
case shootingGuard
}
protocol EnumProtocol {
var description: String { get }
}
enum League: EnumProtocol {
case teamA(PlayerA)
case teamB(PlayerB)
}
extension League {
var description: String {
switch self {
case let .teamA(player):
switch player {
case .center: return "Center"
case .smallForward: return "Small Forward"
case .powerForward: return "Power Forward"
}
case let .teamB(player):
switch player {
case .pointGuard: return "Point Guard"
case .shootingGuard: return "Shooting Guard"
}
}
}
}
League.teamA(.smallForward).description
//League.teamA(.allCases)
//League.teamB(.allCases)
【问题讨论】:
-
您真正想要实现的目标是什么?
allCases是一个数组,而目前您的关联值是奇异值,因此您需要澄清是否希望能够将单个玩家或一组玩家传递给枚举案例。 -
确切地说,获取一个包含案例
League.teamA (.allCases)和单个League.teamA (. powerForward)的所有元素的数组。我知道allcases不正确。我可以采用什么解决方案?