gpt4 book ai didi

arrays - 无法将任何数组类型传递给以 [Any] 作为参数的函数

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

我有一个[String]类型的数组

let names = ["Joffrey", "Cersei", "Mountain", "Hound"]

我有一个接受 [Any] 类型数组的函数。

func printItems(items: [Any]){
for item in items {
print(item)
}
}

现在,当我以 names 作为参数调用函数时,

printItems(names)

我收到错误消息无法使用类型为“([String])”的参数列表调用“printItems”

Any 只是所有类型都隐式遵守的协议(protocol)的 typealias

想法?

最佳答案

这是 Swift 的一个令人惊讶的限制。您不能将数组转换为 [Any] 类型,因此您不能将它传递给采用 [Any] 类型的函数。您可以使用 map 来转换数组的每一项:

printItems(names.map {$0 as Any})

但是,在 Swift 中执行此操作的正确方法是使用 Generics :

func printItems<T>(items: [T]) {
for item in items {
print(item)
}
}

let names = ["Joffrey", "Cersei", "Mountain", "Hound"]
let numbers = [3.1416, 2.71818, 1.4142, 1.618034]

printItems(names) // This now works
printItems(numbers) // This works too

关于arrays - 无法将任何数组类型传递给以 [Any] 作为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31697093/

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