使用斯威夫特 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)