This seems to contradict Swift’s goal of being safe by default <https://swift.org/about/>, no? It would make me incredibly uncomfortable if there were a backdoor in DI, even if that backdoor emitted traps when it fails.
> On Jan 28, 2017, at 1:07 PM, Victor Petrescu via swift-evolution > <swift-evolution@swift.org> wrote: > > Hello, > > My name is Victor, been a developer (C, delphi, php, java, js) for the last > 10 years or so and lately I had the chance to try swift. I have a > suggestion/question regarding initializers. > > Sidenote: If this is not the correct mailing list for this can you please > redirect me to the right place? > > Consider the following 2 classes and code: > > class A { > var x:Int > > init() { > x = 1 > } > } > > class B : A { > override init() { > super.init() // Swift FORCES this call > x = 2 > } > } > > var a:B > for i in 0...99999999 { > a = B() // Whatever... some code that inits B. > } > > This results in 99999999 x = 1 then 99999999 x = 2... the x = 1 being totally > useless in this particular case. > > In this case, if you don't make the super init you get a compile error. > > Now... I see the use of this. It ensure that all members are initialized. For > example if A had a private variable (another strange choice here with what > private means in swift but I haven't thought on it yet so... maybe is a cool > choice), the B init could not initialize it. I also understand that the cases > when you need this minor performance gain are rather rare (but they do still > exist). So I guess the choice for the super.init() had that reasoning. > > Still... my suggestion would be to give a warning, maybe force a key word > before the init (like iKnowWhatImDoing init() {}), THEN in case vars are > still not inited give a runtime error (afaik Objective C for example gives a > warning). That ensures everything is ok and also allows programmers that have > strange cases to treat them accordingly. > > Anyway... that would be my suggestion. Maybe this was discussed before > also... If this was discussed before can you please point me to the > discussion? I like to understand the choices for the tools I use. > > > P.S. Please excuse any grammatical errors... English is not my first language. > > Thank you for your time and have a great day, > Petrescu Victor > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution