gpt4 book ai didi

swift - 当输入数组保存在变量中时,调用 Swift 中的泛型函数无法编译

转载 作者:行者123 更新时间:2023-11-30 13:05:27 25 4
gpt4 key购买 nike

我正在尝试编写一个通用函数,它接受包含 Equatable 元素的元组数组,但当我使用变量(而不是原始值)作为参数时,它不会编译。出了什么问题,正确的方法是什么?

func genericFunction<E: Equatable>(input: [(E,E)]) {
// Need E to be Equatable for comparison
}

let someArray = [([1,2,3],[2,3,4])]

// Success on this line, even though the array is the same!
genericFunction([([1,2,3],[2,3,4])])

// Error on this line
// "Cannot convert value of type '[(Array<Int>, Array<Int>)]' to expected
// argument type '[(_, _)]'"
genericFunction(someArray)

提前谢谢您!

最佳答案

第一行实际上也会导致编译错误 - 但仅限于 Swift Playground。奇怪,可能是 Xcode 中的错误。无论如何,在支持我的 E 不一定是数组的目标的同时,执行此操作的正确方法似乎是:

func genericFunction<E: Equatable>(input: [([E],[E])]) {
// Need E to be Equatable for comparison
}

func genericFunction<E: Equatable>(input: [(E,E)]) {
// Need E to be Equatable for comparison
}

let someArray = [([1,2,3],[2,3,4])]

// Both compile now
genericFunction([([1,2,3],[2,3,4])])
genericFunction(someArray)

关于swift - 当输入数组保存在变量中时,调用 Swift 中的泛型函数无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39432686/

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