将 filter/reduce 应用于字典会使 Swift 编译器崩溃:我的错误还是错误?
Applying filter/reduce to dictionary makes Swift compiler crash: my mistake or bug?
我想获得字典中键与指定键不同的所有这些值的最大值,并以函数式方式执行此操作。这是我的代码的近似值:
let d = [1:2, 2:3, 3:4]
let x = d.filter() { (key, _) in key != 1 }
let y = x.map() { (key, value) in value }
let z = y.reduce(0) { (max, value) in max(value, max) }
assert(z == 4)
不幸的是,计算 z
的行使 Swift 编译器(来自最新的 Xcode 7 beta)在其 CanTypeVisitor
中崩溃。
我在这样应用 filter
/reduce
时是否犯了一个(明显的)错误(也许有更简洁的函数形式)?
这个问题显然与 max
的双重使用有关。如果我用这一行替换有问题的行,编译器将不会崩溃:
let z = y.reduce(0) { (max, value) in (value > max) ? value : max }
我想获得字典中键与指定键不同的所有这些值的最大值,并以函数式方式执行此操作。这是我的代码的近似值:
let d = [1:2, 2:3, 3:4]
let x = d.filter() { (key, _) in key != 1 }
let y = x.map() { (key, value) in value }
let z = y.reduce(0) { (max, value) in max(value, max) }
assert(z == 4)
不幸的是,计算 z
的行使 Swift 编译器(来自最新的 Xcode 7 beta)在其 CanTypeVisitor
中崩溃。
我在这样应用 filter
/reduce
时是否犯了一个(明显的)错误(也许有更简洁的函数形式)?
这个问题显然与 max
的双重使用有关。如果我用这一行替换有问题的行,编译器将不会崩溃:
let z = y.reduce(0) { (max, value) in (value > max) ? value : max }