【问题标题】:Array extension of particular type returns an error特定类型的数组扩展返回错误
【发布时间】:2015-09-26 17:10:28
【问题描述】:

我正在尝试为特定类型的元素创建数组扩展。 这是我写的:

(UnElement是一个符合CustomStringConvertible、Equatable、Comparable协议的类)

extension Array where Element : UnElement {
    mutating func ajoute(new: UnElement) -> Bool {
        if new.pKey == nil {
            return false
        } else {
            if self.contains(new) {
                return false
            } else {
                self.append(new)
                return true
            }
        }
    }
}

contains 方法出现错误:

无法使用(UnElement) 类型的参数列表调用“包含”

当然,append 也一样。

好像没有指定数组元素的类型,不知道为什么。

【问题讨论】:

    标签: arrays swift2


    【解决方案1】:

    您需要将new 转换为数组的Element 类型:

    extension Array where Element : UnElement {
        mutating func ajoute(new: UnElement) -> Bool {
            if new.pKey == nil {
                return false
            } else {
                if self.contains(new as! Element) {
                    return false
                } else {
                    self.append(new as! Element)
                    return true
                }
            }
        }
    }
    

    【讨论】:

    • waoooo .... 它有效....但我不明白为什么我必须强制转换...无论如何非常感谢
    【解决方案2】:

    你不需要投射任何东西......

    class UnElement: Equatable {
        var pKey: Int?
        init(key: Int?) {
            pKey = key
        }
    }
    func ==(lhs: UnElement, rhs: UnElement)->Bool {
        return lhs.pKey == rhs.pKey
    }
    
    extension Array where Element : UnElement {
        mutating func ajoute(new: Element) -> Bool {
            if new.pKey == nil {
                return false
            } else {
                if self.contains(new) {
                    return false
                } else {
                    self.append(new)
                    return true
                }
            }
        }
    }
    
    var arr = [UnElement(key: 1), UnElement(key: 2), UnElement(key: nil)]
    arr.ajoute(UnElement(key: 1)) // false
    arr.ajoute(UnElement(key: 3)) // true
    dump(arr)
    /*
    ▿ 4 elements
    ▿ [0]: UnElement #0
    ▿ pKey: 1
    - Some: 1
    ▿ [1]: UnElement #1
    ▿ pKey: 2
    - Some: 2
    ▿ [2]: UnElement #2
    - pKey: nil
    ▿ [3]: UnElement #3
    ▿ pKey: 3
    - Some: 3
    */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2021-10-17
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2020-09-12
      相关资源
      最近更新 更多