<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I don’t remember a proposal for that, but I would definitely support one. &nbsp;I use this pattern all the time (usually by initializing to a default value first), and it would be nice to have an explicit/safe way to handle it, (and to avoid waisting cycles creating an object I never use).</div><div class=""><br class=""></div><div class="">Perhaps we should spell it @init or @initHelp:</div><div class=""><br class=""></div><div class="">class MyClass : MySuperClass {</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; let x:Int</div><div class="">&nbsp; &nbsp; let y:String</div><div class="">&nbsp; &nbsp; let z:Double</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; @init func commonSetup() {</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; self.y = “My String”</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; self.z = 4.2</div><div class="">&nbsp; &nbsp; }</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp;init(x: Int) {</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; self.x = x</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; commonSetup() //No error because commonSetup() sets the value of ‘y’ &amp; ‘z'</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; super.init()</div><div class="">&nbsp; &nbsp;}</div><div class="">}</div><div class=""><br class=""></div><div class="">Basically the @init functions would be inlined into the init. &nbsp;They would only be callable from inits, and could only be called a single time within each init.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Jon</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class="">I believe there was(was?) already a suggestion to introduce special methods 
that could be called from initializers. IMO this is a better solution to 
the problem as you really should not call 'usual' instance method until the 
instance is fully instantiated(super.init() called in your case):

class MyClass : MySuperClass {

        let x : Int
        let y : String  //let!

        initfunc calcY(somePatam: Int) -&gt; String {
                return ....
        }

        init(x: Int) {
                self.x = x
                self.y = assignY(5)
                super.init()
        }
}</pre></blockquote><div class=""><br class=""></div></div></body></html>