新的Swift数组语法和通用函数

时间:2014-07-16 08:23:59

标签: arrays xcode generics swift

从Xcode beta 3开始,我们可以将[int]写为Array<Int>的简写。

所以我们应该这样写:

func commonElements <T, U where T: Sequence, U: Sequence,
    T.GeneratorType.Element: Equatable,
    T.GeneratorType.Element == U.GeneratorType.Element>
    (lhs: T, rhs: U) -> [T.GeneratorType.Element] {
        var result = [T.GeneratorType.Element]()
        for lhsItem in lhs {
            for rhsItem in rhs {
                if lhsItem == rhsItem {
                    result += rhsItem
                }
            }
        }
        return result
}
commonElements([1, 2, 3, 4], [2, 4, 6])

由于我不明白的原因,Xcode不接受短语法来初始化result数组,但接受其长等效Array<T.GeneratorType.Element>()

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

也许编译器感到困惑。这虽然有效

var result: [T.GeneratorType.Element] = []

并且更具可读性IMO。