在我的项目中,尝试使用带有闭包的捕获列表,但我注入了隐式解包的依赖项,因为我保证它们将通过依赖项注入填充。我发现使用捕获列表会导致编译错误。
var forced: String!
func example() {
escapingClosure { [forced] in
let new = forced + "something" //has to be unwrapped again despite being forced
print(new)
}
}
func escapingClosure(closurce: @escaping () -> ()) {
//do something
}
这是错误:
我可以通过在闭包内强制展开来解决这个问题,但我很惊讶考虑到隐式展开声明,这是必要的。为什么这一步是必要的?这是错误还是功能?