gpt4 book ai didi

swift - 如何转换数组类型?

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

如何转换已定义的 let a = [1, 2, 3]Array<CustomStringConvertible>最方便?

类似于 a as! [CustomStringConvertible] , let b: [CustomStringConvertible] = a , let b = Array<CustomStringConvertible>(s: a) ...

最佳答案

好问题!

正如我所想,Swift 支持Array 类型的协变,但似乎只有类支持协变。比如这段代码

class Animal {

}

class Cat: Animal {

}

let cats = [Cat(), Cat()]
let animals: [Animal] = cats

完美运行。但是,如果我们将 class Animal 更改为 protocol Animal,它将停止工作并显示错误。

所以,我认为解决方案是

  • 如果两种类型都是类,则使用协方差let animals: [Animal] = cats
  • 如果您需要将数组转换为协议(protocol)数组,请使用 let b = a.map { $0 as CustomStringConvertible }

关于swift - 如何转换数组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744959/

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