我正在通過Swift 2.2附帶的「Guided Tour」遊樂場。在仿製藥的一章,你得到這個非常繁瑣的函數聲明甩了你:在Swift中實例化相關類型的數組
func anyCommonElements <T: SequenceType, U: SequenceType where
T.Generator.Element: Equatable,
T.Generator.Element == U.Generator.Element>
(lhs: T, _ rhs: U) -> Bool {
for lhsItem in lhs {
for rhsItem in rhs {
if lhsItem == rhsItem {
return true
}
}
}
return false
}
anyCommonElements([1, 2, 3], [3])
該函數返回兩個序列是否具有任何公共元素,這是很簡單的。
本章的練習是修改函數以返回兩個序列之間的公共元素的數組。由此我得到的功能需要有一個返回類型像
(lhs: T, _ rhs: U) -> [T.Generator.Element]
這說起來簡單,做一個數組,把共同的元素在裏面,然後返回。但是到目前爲止,本書中沒有任何東西教會我如何製作一個新的[T.Generator.Element]
類型的數組,因此我不知道如何繼續。我自然認爲這樣的事情會工作:
var result = [T.Generator.Element]()
但是,是不會編譯。那麼我如何解決這個問題呢? (對於首次引入仿製藥,這不是一點點先進嗎?)