将UInt32转换为通用T:数字

时间:2019-02-25 07:46:03

标签: swift generics casting

我正在编写一个通用(数字)类,需要将Uint32结果(从arc4random()强制转换为通用T。T被限制为数字。该怎么办?

1 个答案:

答案 0 :(得分:0)

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 ...
}