swift 5 中新的“count(where:)”语法的问题

Rom*_*man 3 swift swift5

问题是它无法编译。
好像没有这样的语法。
相应的提案被标记为已接受。
他们在几篇值得信赖的文章中使用了该语法:例如此处此视频
上面视频中的确切代码无法编译:

import Foundation

let scores = [100, 80, 85]
let passCount = scores.count { $0 >= 85 }
Run Code Online (Sandbox Code Playgroud)

错误:

无法调用非函数类型“Int”的值

Mar*_*n R 5

SE-0220已被接受,但尚未在 Swift 5 中实现。

事实上,由于类型检查器的问题,必须恢复最初的实现。有关更多信息,请参阅Swift 论坛中引用函数时需要参数名称:

你们中的一些人可能还记得SE-0220,我的提案将 count(where:) 函数添加到序列中。该提案最终被 Swift 5 及时接受,但遗憾的是不得不恢复,因为它导致了类型检查器的问题。

问题是,当您在诸如 之类的表达式中引用 count 时 myArray.count * 5,您可能会引用counttype 的属性Intcount(where:)具有 type 的函数 ((Element) -> Bool) -> Int,您可以将其简写为 count 。当 Swift 尝试解析要使用的函数版本时*,它必须运行更多潜在的实现,当您增加表达式中运算符的数量时,这些实现会以组合方式爆炸。