代码之家  ›  专栏  ›  技术社区  ›  Cœur Gustavo Armenta

致命错误:只有双向集合可以提前负数

  •  0
  • Cœur Gustavo Armenta  · 技术社区  · 7 年前

    let a = Array(0 ..< 1000)
    let s = Set(a)
    

    这将在运行时生成:

    致命错误:只有双向集合可以提前负数

    Xcode 9.4游乐场和Xcode 10 beta 3游乐场都出现问题。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Cœur Gustavo Armenta    7 年前

    这在xcode10beta6和更新的版本中是固定的,所以我已经更新了解决方法,只适用于旧的swift版本。


    对于较旧的Xcode版本(如Xcode 9.4),这可能是由于元素数大于100造成的。

    变通办法 found by Karoy Lorentey ,是自定义集合的游乐场描述:

    #if !swift(>=4.2)
    extension Set: CustomPlaygroundDisplayConvertible {
        public var playgroundDescription: Any {
            return description
        }
    }
    #endif
    
    let a = Array(0 ..< 1000)
    let s = Set(a)
    

    这样做在运行时不会出错。

    推荐文章