【问题标题】:Cast UInt32 to Generic T: Numeric将 UInt32 转换为通用 T:数字
【发布时间】:2019-07-18 14:02:43
【问题描述】:

我正在编写一个通用(数字)类,需要将 Uint32 结果(来自arc4random())转换为通用 T。T 仅限于数字。这怎么可能?

【问题讨论】:

  • 这正是泛型类型的目的。
  • 你知道新的Random APIs in Swift 4.2吗?
  • 你有机会检查答案吗?如果有问题请告诉我。

标签: swift generics casting


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多