> On Nov 19, 2016, at 9:27 AM, Jean-Daniel <[email protected]> wrote:
> 
> 
>> Le 19 nov. 2016 à 15:58, Alan Cabrera via swift-evolution 
>> <[email protected] <mailto:[email protected]>> a écrit :
>> 
>> I’m not sure if this was proposed or not; or even if this is a Swift-ly way 
>> of doing things.  It would be pretty handy to be able to declare init() 
>> functions in my module to register handlers.  It’s a common pattern in 
>> enterprise software.
>> 
>> Currently, I have to generate a lot of boilerplate code to emulate the 
>> behavior.  I think it would be cleaner to have these global init() functions.
>> 
> 
> I’d rather like a swift attribute equivalent to : __attribute__((constructor))
> 
> It will not force me to call my initializer init, and moreover it will let me 
> declare multiple functions so I would be able to register multiples handlers 
> from a single module without having to group all the register call into a 
> single init() function.
> 

I’m not quite following what “__attribute__((constructor))” means; it looks 
like an LLVM implementation bit.  Do you mean defining a new Swift declaration 
attribute named “constructor”?  If so, I really like that idea.  I think that 
the specific attribute name “constructor” may be a bit confusing though, since 
it’s not really constructing anything specific.  Maybe “startup” would be a 
more descriptive attribute name?

@startup
func registerHandlers() {
}

The attribute would also help the compiler and IDEs prevent direct calling of 
the startup functions, thus reinforcing/focusing the startup functions’ role as 
global startup functions.  Maybe global teardown functions would be helpful as 
well.

I’m going to try goofing around with the idea on my fork.





_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to