gpt4 book ai didi

ios - 如何强制 Swift 可选数组(很好)

转载 作者:可可西里 更新时间:2023-10-31 23:44:17 28 4
gpt4 key购买 nike

使用 swift 2.1

我正在寻找一种将非可选类型数组分配给可选类型数组的好方法,其中类型相同。这是我尝试过的一些方法:

var foos: [Int?] = []
let bars: [Int] = []

foos = bars // Error: Cannot assign value of type '[Int]' to type '[Int?]'
foos = bars as [Int?] // Error: Cannot convert value of type '[Int]' to type '[Int?]' in coercion
foos = bars as? [Int?] // Error: 'Int?' is not a subtype of 'Int'
foos = bars.map { $0 } // Works but I think there must be a better way

将非可选类型分配给可选类型在 Swift 中工作正常。我不明白为什么这对数组也不起作用。

var foo: Int? = nil
let bar: Int = 0

foo = bar // Works fine

有什么想法吗?

最佳答案

您可以使用一些看起来像类型转换的通用函数使语法更容易接受:

var foos: [Int?]   = []
let bars: [Int] = []
let fums: [Int64?] = []

func CastArray<T, U>(array:[T?]) -> [U?]
{ return array.map({ $0 as! U? }) }

func CastArray<T, U>(array:[T]) -> [U?]
{ return array.map({ $0 as? U }) }

foos = CastArray(bars)
foos = CastArray(fums)

关于ios - 如何强制 Swift 可选数组(很好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029470/

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