Swift 将UInt32转换为通用T:数字

Swift 将UInt32转换为通用T:数字,swift,generics,casting,Swift,Generics,Casting,我正在编写一个泛型(数值)类,需要将Uint32结果(从arc4random())强制转换为泛型T。T被限制为数值。如何做到这一点?数字协议有一个可失败的初始值设定项,该初始值设定项接受一个BinaryInteger参数。如果T符合Numeric,则可以执行以下操作 guard let val = T(exactly: arc4random()) else { // Handle error ... } 正如Alexander提到的,您可能希望利用新的随机API,例如 guard le

我正在编写一个泛型(数值)类,需要将Uint32结果(从
arc4random()
)强制转换为泛型T。T被限制为数值。如何做到这一点?

数字协议有一个可失败的初始值设定项,该初始值设定项接受一个
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 ...
}

guard let val=T(确切地说:UInt32.random(in:0..数值
协议有一个可失败的初始值设定项,它接受一个
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 ...
}

guard let val=T(确切地说:UInt32.random(在:0.这正是e泛型类型的目的。你知道新的吗?你有机会检查答案吗?如果有问题,请告诉我。这正是e泛型类型的目的。你知道新的吗?你有机会检查答案吗?如果有问题,请告诉我。