<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 dir="ltr" class=""><div class=""><br class=""></div><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">&nbsp; &nbsp; &nbsp; &nbsp; * What is your evaluation of the proposal?</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">I like the general direction of more flexible&nbsp;property-wise&nbsp;initialisation however I do have some reservations about the detailed proposal, in particular:</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">1. You can’t initialise lets.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">2. You can’t initialise more-private-stored properties than the&nbsp;property-wise&nbsp;initialiser itself.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">3. You can't label&nbsp;property-wise&nbsp;initialiser arguments.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">4. It is not totally clear which properties are to be initialised&nbsp;property-wise.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">5. The proposal adds to the existing menberwise&nbsp;initialisers&nbsp;and the default initialisers; which then means there are 4 initialisers (manual, current memberwise default, and new memberwise), therefore I would prefer a proposal that encompassed all of these.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">6. Super types need a default initialiser.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">7. The memberwise&nbsp;init does not have default values for its memberwise&nbsp;arguments which means that all memberwise arguments need to be specified when calling the memberwise init (like current memberwise init).</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">8. Stored&nbsp;properties&nbsp;have to be given a default value to participate in memberwise&nbsp;initialisation.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">9. `memberwise` isn’t a great keyword, since funcs are also members</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">10. The&nbsp;… notation can be a bit&nbsp;invisible.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">However I think that if the design space is opened up then these issues could be addressed. Here is a modification to the existing proposal:</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">1. Basic example: demonstrates a short form for C-like structs and let initialisation:</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp;&nbsp;// Short-property-wise form</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; class Size2D&nbsp;properties&nbsp;{ // Note: properties keyword</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; let width = 0.0, height = 0.0 // Note: let</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0); min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; // Translation to long-property-wise form</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; class Size2D {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;properties&nbsp;{ // Note: obvious which&nbsp;properties&nbsp;are&nbsp;property-wise initialised</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let width = 0.0, height = 0.0</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; } init(properties) {} // Note: placeholder, properties, for property-wise args and no init body</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp;&nbsp;</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">&nbsp; &nbsp; </span>// Translation to basic Swift</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">class</span> Size2D {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> width: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> height: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">init</span>(width: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>, height: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>) { <span style="font-variant-ligatures: no-common-ligatures; color: #008400" class="">// Note: default values for property-wise args</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">width</span> = width</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">height</span> = height</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div></div><div class=""><br class=""></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">2. Example of how super is to be called.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp;&nbsp;// Short-property-wise form</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; class Size3D: Size2D properties(width: Double = 0.0, height: Double = 0.0) {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; let depth: Double = 0.0</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0); min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; // Translation to long-property-wise form</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; class Size3D: Size2D {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; properties(width: Double = 0.0, height: Double = 0.0) {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let depth: Double = 0.0</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; } init(properties) {}</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp;&nbsp;</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">&nbsp; &nbsp; </span>// Translation to basic Swift</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">class</span> Size3D: <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">Size2D</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> depth: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span></div><div style="margin: 0px; line-height: normal;" class=""><font face="Menlo" class=""><span style="font-size: 11px;" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);" class="">init</span><font face="Menlo" class=""><span style="font-size: 11px;" class="">(width: </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);" class="">Double</span><font face="Menlo" class=""><span style="font-size: 11px;" class=""> = </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);" class="">0.0</span><font face="Menlo" class=""><span style="font-size: 11px;" class="">, height: </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);" class="">Double</span><font face="Menlo" class=""><span style="font-size: 11px;" class=""> = </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);" class="">0.0</span><font face="Menlo" class=""><span style="font-size: 11px;" class="">, depth: </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);" class="">Double</span><font face="Menlo" class=""><span style="font-size: 11px;" class=""> = </span></font><span style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);" class="">0.0</span><font face="Menlo" class=""><span style="font-size: 11px;" class="">) { </span></font><font color="#008400" face="Menlo" class=""><span style="font-size: 11px;" class="">// Note: super args before&nbsp;property-wise&nbsp;args</span></font></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">depth</span> = depth</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">super</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">init</span>(width: width, height: height)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">3. More involved example with private property, properties arg label, other init, and other methods</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp;&nbsp;// Only long-property-wise form allowed since other methods and other initialisers required</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; class LoggedAndScaledSize2D: Size2D {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; properties(width: Double = 0.0, height: Double = 0.0) {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; private var times scale: Double = 0.0 // Note: label, times, and private</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; } init(properties) {}</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; properties init(properties, logger: Logger? = nil) { // Note: only 1 property-wise init can have properties and super args</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logger?.log(self) // Note: rest of init</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; var scaledWidth: Double { // Note: other methods</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get { return scale * width }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">&nbsp; &nbsp; </span>// Translation to basic Swift</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">class</span> LoggedAndScaledSize2D: <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">Size2D</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">private</span> <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">var</span> scale: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double&nbsp;</span><span style="color: rgb(0, 132, 0);" class="">// Note: private</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">init</span>(width: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>, height: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>, times scale: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>) { <span style="font-variant-ligatures: no-common-ligatures; color: #008400" class="">// Note: label times</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">scale</span> = scale</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">super</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">init</span>(width: width, height: height)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">init</span>(width: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>, height: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>, times scale: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0.0</span>, logger: <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">Logger</span>? = <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">nil</span>) {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">scale</span> = scale</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">super</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">init</span>(width: width, height: height)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logger?.<span style="font-variant-ligatures: no-common-ligatures; color: #31595d" class="">log</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">self</span>) <span style="font-variant-ligatures: no-common-ligatures; color: #008400" class="">// Rest of init</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">var</span> scaledWidth: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> { <span style="font-variant-ligatures: no-common-ligatures; color: #008400" class="">// Other methods</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">get</span> { <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">scale</span> * <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">width</span> }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">set</span> { <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">scale</span> = newValue / <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">width</span> }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">var</span> scaledHeight: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Double</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">get</span> { <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">scale</span> * <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">height</span> }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">set</span> { <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">scale</span> = newValue / <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">height</span> }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div></div><div class=""><br class=""></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">4. The existing memberwise&nbsp;and default&nbsp;initialisers&nbsp;are&nbsp;deprecated.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">Obviously the above is just a three examples - happy to flesh out details if there is interest.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">The semantics of the proposal are as&nbsp;though&nbsp;the literal translations from short-property-wise&nbsp;form, to long-property-wise&nbsp;form, to basic Swift occurred.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">The proposed semantics "as though literal translated" and previous compiler-written initialisers deprecated means that `struct Length { var length: Double = 0.0 }` is now an error - it has no&nbsp;initialisers. Programmer would write&nbsp;</span><span style="background-color: rgb(255, 255, 255);" class="">`struct Length&nbsp;properties { var length: Double = 0.0 }`, note added&nbsp;properties keyword.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">Whether properties is much better than memberwise and&nbsp;…&nbsp;is open to some debate!</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;" class=""></span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">&nbsp; &nbsp; &nbsp; &nbsp; * Is the problem being addressed significant enough to warrant a change to&nbsp;</span><span class="il" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;">Swift</span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">?</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">I think a revised proposal would be viable, but marginal as it stands.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;" class=""></span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">&nbsp; &nbsp; &nbsp; &nbsp; * Does this proposal fit well with the feel and direction of&nbsp;</span><span class="il" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;">Swift</span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">?</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">In some ways yes (because Swift has compiler written initialisation already), but in others, like adding another way of doing initialisation, no (because one aim of the evolution is not to become a&nbsp;‘kitchen-sink' language like C++).</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;" class=""></span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">&nbsp; &nbsp; &nbsp; &nbsp; * If you have you used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">Yes I have used a&nbsp;similar&nbsp;feature in Scala and the current proposal is much more complicated. The Scala solution seems better to me. But see proposed alternative above.</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;" class=""></span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">&nbsp; &nbsp; &nbsp; &nbsp; * How much effort did you put into your&nbsp;</span><span class="il" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;">review</span><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">? A glance, a quick reading, or an in-depth study?</span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="background-color: rgb(255, 255, 255);" class="">I have kept up with the discussions and have interacted with Matthew Johnston and others on this topic. I have also discussed with&nbsp;</span><span style="background-color: rgb(255, 255, 255);" class="">Bill Venners from Escalate; who is well known as an educator in the Scala&nbsp;</span><span style="background-color: rgb(255, 255, 255);" class="">community, the Scala version it is well liked in the Scala community and is easy to teach.</span></div><div class=""><div class=""><br class=""></div><div class="">Glad this topic is under discussion,</div><div class=""><br class=""></div><div class="">&nbsp;-- Howard.</div></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On 7 January 2016 at 09:47, Chris Lattner via swift-evolution <span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Swift community,<br class="">
<br class="">
The review of "Flexible property-wise Initialization" begins now and runs through January 10th. The proposal is available here:<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0018-flexible-property-wise-initialization.md" rel="noreferrer" target="_blank" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0018-flexible-property-wise-initialization.md</a><br class="">
<br class="">
Reviews are an important part of the Swift evolution process. All reviews should be sent to the swift-evolution mailing list at<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
<br class="">
or, if you would like to keep your feedback private, directly to the review manager.<br class="">
<br class="">
What goes into a review?<br class="">
<br class="">
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift. When writing your review, here are some questions you might want to answer in your review:<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; * What is your evaluation of the proposal?<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; * Is the problem being addressed significant enough to warrant a change to Swift?<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; * Does this proposal fit well with the feel and direction of Swift?<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; * If you have you used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; * How much effort did you put into your review? A glance, a quick reading, or an in-depth study?<br class="">
<br class="">
More information about the Swift evolution process is available at<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; <a href="https://github.com/apple/swift-evolution/blob/master/process.md" rel="noreferrer" target="_blank" class="">https://github.com/apple/swift-evolution/blob/master/process.md</a><br class="">
<br class="">
Thank you,<br class="">
<br class="">
-Chris<br class="">
Review Manager<br class="">
_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
</blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature">&nbsp; -- Howard.<br class=""></div>
</div>
</body></html>