gpt4 book ai didi

使用数组类型时 Swift 3 `+` 运算符错误

转载 作者:行者123 更新时间:2023-11-28 08:25:44 25 4
gpt4 key购买 nike

在下面的示例中,我试图让人们可以自由地使用 + 运算符来生成 Request 实例的数组。

struct Request {}

typealias BatchRequest = Array<Request>

func +(lhs: Request, rhs: Request) -> BatchRequest {
return [lhs, rhs]
}

func +(lhs: Request, rhs: BatchRequest) -> BatchRequest {
var arr: [Request] = [lhs]
arr.append(contentsOf: rhs)
return arr
}

func +(lhs: BatchRequest, rhs: Request) -> BatchRequest {
var arr: [Request] = lhs
arr.append(rhs)
return arr
}

func +(lhs: BatchRequest, rhs: BatchRequest) -> BatchRequest {
var lhs: [Request] = lhs
lhs.append(contentsOf: rhs)
return lhs
}

let req1 = Request()
let req2 = Request()
let req3 = Request()

print(req1 + req2)
// Prints "[Request(), Request()]"

print(req1 + req2 + req3)
// Error: argument type 'BatchRequest' (aka 'Array<Request>') does not conform to expected type 'Any'

当与两个操作数一起使用时,这工作正常,但当与三个或更多操作数一起使用时,它不起作用。

将运算符更改为 & 或使用具有左结合性的自定义运算符效果很好,所以我只能猜测 AdditionPrecedence 组有一些东西使重载抛出错误。 (希望这不是 Swift 中的错误)

虽然我可以满足于 &,但我想知道是否有某种方法可以仅针对某些类型覆盖 + 的行为,或者实际上重新声明现有的运算符。

(虽然我没有太大希望。文档中没有任何内容表明我可以......)

最佳答案

在Xcode 7.3.1 (Swift 2.2) 中试过,上面的代码运行良好。

我确实记得在 Swift 2.2 中编写了这段代码并验证了代码是否工作正常,但后来我不确定。

我要向 Swift 提交错误报告。

Xcode 7.3.1

关于使用数组类型时 Swift 3 `+` 运算符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40058954/

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