我正在嘗試編寫一個用於基準測試各種SequenceType實現的迭代性能的函數。它應該簡單地總結序列的內容,其中所有元素都是Int
s。我與表達上的功能通用約束掙扎......如何爲SequenceType實現泛型函數,其中Generator.Element是Int類型
func sum<S: SequenceType where S.Generator.Element: Int>(s: S) -> Int {
var sum = 0
for i in s {
sum += i
}
return sum
}
這將導致以下兩個錯誤:
- 類型
‘S.Generator.Element’
受限於非協議類型’Int’
- 二元運算
'+=‘
不能應用於類型爲’Int'
和’S.Generator.Element’
的操作數
有沒有辦法定義這個函數來處理任何SequenceType
實現,其中的元素專用於Int
?
我試圖力低垂到'詮釋',但這招致輕微的表現懲罰,並扭曲了這個功能的目的離子。 – Palimondo 2015-02-23 14:43:10
我知道我可以使用'reduce'函數,但是我的目的是明確地測試'for in'循環中的序列,它的性能特點與'reduce'略有不同。 – Palimondo 2015-02-23 14:45:13