gpt4 book ai didi

xcode - "Generic parameter ' T ' could not be inferred"重载方法时出错

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:20 25 4
gpt4 key购买 nike

我有这个带有 2 个构造函数的小枚举。当我尝试使用 Int 参数进行初始化时,出现了 "Generic parameter 'T' could not be inferred" 错误。

import UIKit

public enum Result<T> {

case Success(T)
case Failure(Int)

init( any: T) {
self = .Success(any)
}

init( number: Int) {
self = .Failure(number)
}
}

let a = Result(any: "A String")
print(a)

let b = Result(number: 1)
print(b)

有没有办法从 T 中排除 Int 或以某种方式优先于第二个初始化程序?

在 XCode 7.3.1 上测试。

最佳答案

问题不在于它弄错了要使用哪个构造函数,问题在于它需要在您输入 Result(number: 1) 时立即知道 T 的类型。不能让它作为运行时的通配符 T,它必须在编译时解决。

所以你可以这样做:

let b = Result<String>(number: 1) //letting it know that T would be a String.

这很重要的原因是——假设你想把一堆结果放在一个数组中……嗯……你不能把 Result-Int 和 Result-String 放在同一个数组中(除非该数组的类型为 Any),因为它与将 Int 和 String 放入数组中非常相似。简而言之,Result 不仅仅是一种类型,它是一堆类型的集合。

关于xcode - "Generic parameter ' T ' could not be inferred"重载方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075509/

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