Swift中的集合扩展

时间:2018-10-17 22:13:29

标签: arrays swift collections protocols element

在Swift 4.2中玩Collection Extension,我尝试执行以下操作:

如果某个集合包含重复项,那么我想获取该集合中每个元素的编号。

请参阅下面的代码。

有两个错误(请参见屏幕截图)

err-1: enter image description here

err-2: enter image description here  :

这是我的代码:

extension Collection where Iterator.Element: Comparable {
    func occurrencesOfElements() -> [Int: Self] {
        var counts: [Int: Self] = [:]
        let sortedArr = self.sorted(by: { $0 > $1 })
        let uniqueArr = Set(sortedArr) // err-1 !!!!!!!!
        if uniqueArr.count < sortedArr.count {  
            uniqueArr.forEach { counts[$0, default: 0] += 1 } // err-2 !!!!!!!
        }
        return counts
    }
}

// Testing with...
[6, 7, 4, 5, 6, 0, 6].occurrencesOfElements()

// Expected result (see number 6 occurs twice) :
// [0 : 1, 4: 1, 5: 1, 6 : 2, 7 : 1]

0 个答案:

没有答案