下面的代碼是爲了根據出版年份來對期刊出版物進行分組而編寫的。Swift 2 issue關閉groupBy集合
但我得到了錯誤「無法將類型的價值‘(雜誌) - >詮釋’到期望的參數類型‘(_) - > _’」
下面是用的一個精簡版的遊樂場真實代碼供你玩http://swiftlang.ng.bluemix.net/#/repl/1de81132cb2430962b248d2d6ff64922e2fe912b1480db6a7276c6a03047dd89
class Journal {
var releaseDate: Int = 0
static var journals = [Journal]()
class func groupedReduce<S: SequenceType, K: Hashable, U> (
source: S,
initial: U,
combine: (U, S.Generator.Element) -> U,
groupBy: (S.Generator.Element) -> K
)
-> [K:U]
{
var result: [K:U] = [:]
for element in source {
let key = groupBy(element)
result[key] = combine(result[key] ?? initial, element)
}
return result
}
class func groupBy() {
let byYear = { (journal: Journal) in
journal.releaseDate
}
let groupedJournals = groupedReduce(journals, initial: 0, combine:+, groupBy: byYear)
print("Grouped journals = \(groupedJournals)")
}
}
Journal.journals = [Journal(), Journal(), Journal(), Journal()]
for j in Journal.journals {
j.releaseDate = 1
}
Journal.groupBy()
有很多簡單的麻煩與你的代碼。第一個是編譯器無法推斷分組日記的類型。使用let gropedJournals:Int = ....應該解決它。最糟糕的是,Journal沒有成員生成器.....只是繼續一步一步 – user3441734
其他的麻煩是,運算符+期望這兩個操作數和結果是相同的類型... – user3441734
你混淆了事情。 S是一個SequenceType,@ user3441734 –