数组 – 无法将任何数组类型传递给以[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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |