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 swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users