I attempted the following code which involves passing a closure – one that
doesn't escape obviously – but the compiler complains that I need to make
formHeaders and formStream vars.
public func finish() throws -> ([String:String],InputStream) {
let formHeaders: [String:String]
let formStream: InputStream
try finish({ (fh, fs, _) in
formHeaders = fh
formStream = fs
})
return (formHeaders, formStream)
}
If I have code like this however the use of let is ok.
public func finish() throws -> ([String:String],InputStream) {
let formHeaders: [String:String]
let formStream: InputStream
if self.finalized.get() {
formHeaders = ["foo":"bar"]
//formStream = ...
}
else {
formHeaders = [:]
//formStream = ...
// or throw something here
}
return (formHeaders, formStream)
}
If the closure is non-escaping and the code as structured the compiler
should be able to reason about the initialization correctness of those
lets...? ...or am I missing something?
-Shawn
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users