> On 26 Oct 2017, at 21:16, John McCall via swift-evolution > <swift-evolution@swift.org> wrote: > >> On Oct 26, 2017, at 2:19 PM, Mike Kluev via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> on Wed, 25 Oct 2017 13:41:40 +0200 David Hart <da...@hartbit.com >> <mailto:da...@hartbit.com>> wrote: >> >> class A { >> func foo() { >> func local() { >> bar() // error: Call to method ‘bar' in function ‘local' >> requires explicit 'self.' to make capture semantics explicit >> } >> >> // ... >> } >> } >> >> it's not only about calling "bar"... any variable access will require self. >> which will be quite annoying, especially given the fact that "local" my not >> even be used in an escaping context discussed. (*) >> >> i think it is more consistent to prepend local with self if it is used in an >> escaping context: > > I think this would be possible, yes. If nothing else, we could allow the > function to be explicitly declared escaping or non-ecaping to get this rule.
I don’t see how this makes any sense or be possible: * It doesn’t make sense for me because local is not a member function of A. * It would cause ambiguity when trying to call another member function with the same name as the local function. > John. > >> >> func foo() { >> >> func local() { >> bar() // no self needed here ever >> variable = 1 // no self needed here, ever >> } >> >> func otherLocal() { >> print("i am not capturing self") >> } >> >> DispatchQueue.main.async { >> local() // error without self >> self.local() // ok >> otherLocal() // ok without self >> } >> } >> >> (*) interestingly, closures always treat themselves as "escaping", even if >> it's not the case, e.g. even if i only use them in a non-escaping contexts. >> worth to add an explicit attribute to denote non-escaping closures? >> >> let closure = @nonescaping { >> print("i am not escaping") >> variable = 1 // ok without self >> } >> >> DispatchQueue.main.async(execute: closure) // error, non escaping closure >> passed >> >> Mike >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org <mailto:swift-evolution@swift.org> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution