从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>()
。
我错过了什么吗?
答案 0 :(得分:3)
也许编译器感到困惑。这虽然有效
var result: [T.GeneratorType.Element] = []
并且更具可读性IMO。