【发布时间】:2020-10-18 05:44:12
【问题描述】:
我想扩展 CaseIterable 协议,以便所有 CaseIterable 枚举都有一个 random 静态变量,它返回一个随机案例。这是我试过的代码
public extension CaseIterable {
static var random<T: CaseIterable>: T {
let allCases = self.allCases
return allCases[Int.random(n: allCases.count)]
}
}
但这无法编译。有没有办法使用静态变量来实现这一点?或者如果没有,我将如何编写等效的静态函数?
ps 任何在家玩的人的 Int.random 扩展:
public extension Int {
static func random(n: Int) -> Int {
return Int(arc4random_uniform(UInt32(n)))
}
}
【问题讨论】:
标签: swift