加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 02:23:41 所属栏目:百科 来源:网络整理
导读:我有一个类型为[String]的数组 let names = ["Joffrey","Cersei","Mountain","Hound"] 我有一个函数,它采用[Any]类型的数组. func printItems(items: [Any]){ for item in items { print(item) }} 现在,当我用名称作为参数调用函数时, printItems(names) 我
我有一个类型为[String]的数组
let names = ["Joffrey","Cersei","Mountain","Hound"]

我有一个函数,它采用[Any]类型的数组.

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

现在,当我用名称作为参数调用函数时,

printItems(names)

我收到错误无法使用类型为'([String])’的参数列表调用’printItems’.

Any只是所有类型隐含符合的协议的类型.

思考?

这是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","Hound"]
let numbers = [3.1416,2.71818,1.4142,1.618034]

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读