You are correct! Thanks! -Kenny
> On Jan 5, 2018, at 1:24 PM, Shawn Erickson <[email protected]> wrote: > > At the moment an optional closure is considered escaping so you don’t have to > state it using @escaping and as you see you actually can’t. A bug or two > exists against Swift related this and I don’t know their current state. > > If after removing @escaping things still fail to compile please post a code > example. > > -Shawn > On Fri, Jan 5, 2018 at 1:17 PM Kenny Leung via swift-users > <[email protected] <mailto:[email protected]>> wrote: > Because it’s being assigned to an ivar, it’s forced to be escaping, or so the > compiler tells me. > > -Kenny > > >> On Jan 5, 2018, at 12:04 PM, Kevin Nattinger <[email protected] >> <mailto:[email protected]>> wrote: >> >> If you remove the @escaping you'll notice it doesn't complain about a >> non-escaping closure escaping. >> I could be wrong, but I believe that's because using it as an associated >> value forces it to escape on the calling side. >> >> func esc(_ x: @escaping () -> ()) { >> x() >> } >> func noesc(_ x: () -> ()) { >> x() >> } >> >> func foo() { >> noesc { >> print(owner) // compiles >> } >> esc { >> print(owner) // error: requires explicit 'self.'… >> } >> Optional<()->()>.some { >> print(owner) // error: requires explicit 'self.'… >> } >> } >> >> >>> On Jan 5, 2018, at 11:48 AM, Kenny Leung via swift-users >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> Hi All. >>> >>> It seems that if you have an escaping closure argument, you can’t make it >>> optional. Am I right? >>> init ( >>> owner:AnyObject, >>> handler:@escaping (HXObserverNotification)->Void >>> ) { >>> self.owner = owner >>> self.handler = handler >>> } >>> >>> You could try this: >>> init ( >>> owner:AnyObject, >>> handler:@escaping ((HXObserverNotification)->Void)? >>> ) { >>> self.owner = owner >>> self.handler = handler >>> } >>> You get “@escaping attribute only applies to function types” >>> >>> Or you could try this: >>> init ( >>> owner:AnyObject, >>> handler:(@escaping (HXObserverNotification)->Void)? >>> ) { >>> self.owner = owner >>> self.handler = handler >>> } >>> You get “@escaping attribute may only be used in function parameter >>> position” >>> >>> -Kenny >>> >>> >>> _______________________________________________ >>> swift-users mailing list >>> [email protected] <mailto:[email protected]> >>> https://lists.swift.org/mailman/listinfo/swift-users >>> <https://lists.swift.org/mailman/listinfo/swift-users> >> > > _______________________________________________ > swift-users mailing list > [email protected] <mailto:[email protected]> > https://lists.swift.org/mailman/listinfo/swift-users > <https://lists.swift.org/mailman/listinfo/swift-users>
_______________________________________________ swift-users mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-users
