1
我是使用Xcode版本8.3的Swift新手。我有一個字符串數組,我試圖找到數組的模式值。在Swift中查找字符串數組的方式
我已經嘗試了建議代碼從這個堆棧溢出後(並且已經搜查他人):Swift 3: Getting the most frequent value of an array
但我沒有得到它的工作。
在試圖NSCountedSet:
let countedSet = NSCountedSet(array: myArray)
let mostFrequent = countedSet.max { countedSet.count(for: $0) <
countedSet.count(for: $1) }
控制檯打印出「無」一旦運行,也許是因爲我的數組是字符串數組?似乎.max在我的Xcode版本中不再有效。我不確定。
我也試過使用「hashable」和「reduce」,並且無法讓這些工作。我得到的錯誤「聲明只在文件範圍內有效」:
extension Array where Element: Hashable {
var mode: Element? {
return self.reduce([Element: Int]()) {
var counts = $0
counts[$1] = ($0[$1] ?? 0) + 1
return counts
}.max { $0.1 < $1.1 }?.0
}
}
我想模式存儲作爲一種價值,所以我不知道,使用字典將是適當的。
任何建議將非常感激。
謝謝!
這是一個相當體面的方式來做到這一點。錯誤發生是因爲您可能試圖在另一個類/結構體/枚舉/擴展的範圍內聲明此擴展。如錯誤所示,該擴展的聲明必須位於文件範圍內 – Alexander