gpt4 book ai didi

swift - 有没有办法将任何通用数字转换为 double ?

转载 作者:搜寻专家 更新时间:2023-10-30 22:07:15 24 4
gpt4 key购买 nike

所以我有一个方法有 3 种不同类型的参数可以进来:

Int32IntDouble。所以想法是使用泛型来最小化接口(interface)

func resetProgressBarChunks<T:Numeric>(originalIterationCount: T) {
guard let iCount = originalIterationCount as? Double else {return}

但我意识到,在运行时,Int32Int 参数实际上会使 guard let 失败。这是有道理的,这只是我的一厢情愿。

但是,如果我尝试简单地将一个 Numeric 转换为一个 double,编译器会发出警告:

func resetProgressBarChunks<T:Numeric>(originalIterationCount: T) {
guard let iCount = Double(originalIterationCount) else {return}

Cannot invoke initializer for type 'Double' with an argument of type '(T)'

我想这也是有道理的,因为 Double 没有接受泛型的初始化器。

所以看起来我将被迫编写 3 个具有不同参数类型的方法。 Int32Int 参数类型将转换为 Double,然后调用 Double 方法。这真的是最好的方法吗?我真的希望我能以某种方式利用 Numeric

最佳答案

... because there is no initializer for Double that takes a Generic.

这并不完全正确。没有采用 Numeric 参数的初始化程序。但是有一些通用初始化器采用 BinaryIntegerBinaryFloatingPoint 参数,因此两个重载就足够了:

func resetProgressBarChunks<T: BinaryInteger>(originalIterationCount: T) {
let iCount = Double(originalIterationCount)
// ...
}

func resetProgressBarChunks<T: BinaryFloatingPoint>(originalIterationCount: T) {
let iCount = Double(originalIterationCount)
// ...
}

这包括 DoubleIntInt32 参数以及 Float 和所有其他固定大小的整数类型。

关于swift - 有没有办法将任何通用数字转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com