【发布时间】:2019-07-18 14:02:43
【问题描述】:
我正在编写一个通用(数字)类,需要将 Uint32 结果(来自arc4random())转换为通用 T。T 仅限于数字。这怎么可能?
【问题讨论】:
-
这正是泛型类型的目的。
-
你知道新的Random APIs in Swift 4.2吗?
-
你有机会检查答案吗?如果有问题请告诉我。
我正在编写一个通用(数字)类,需要将 Uint32 结果(来自arc4random())转换为通用 T。T 仅限于数字。这怎么可能?
【问题讨论】:
Numeric 协议有一个 init?(exactly:) 可失败初始化程序,它接受一个 BinaryInteger 参数。如果T 符合Numeric 那么你可以这样做
guard let val = T(exactly: arc4random()) else {
// Handle error ...
}
正如 Alexander 所说,您可能希望利用新的随机 API,例如
guard let val = T(exactly: UInt32.random(in: 0..<100)) else {
// Handle error ...
}
【讨论】: