<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 22, 2015, at 11:22 AM, Thorsten Seitz &lt;<a href="mailto:tseitz42@icloud.com" class="">tseitz42@icloud.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><br class=""><blockquote type="cite" class="">Am 22.12.2015 um 05:43 schrieb Matthew Johnson via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt;:<br class=""><br class="">What do you think the downsides are of synthesizing memberwise initialization for properties with an “initial value”? &nbsp;<br class=""></blockquote><br class="">When using the memberwise initializer those properties are always assigned a value twice. First the initial value and then the value provided by the initializer. The first value is constructed and assigned unnecessarily and in corner cases this might even be problematical, e.g. if creating a value of a certain kind has a side effect like incrementing an instance counter or logging something.<br class=""><br class="">-Thorsten </div></blockquote></div><br class=""><div class="">My proposal is specifically suggesting that we treat “initial value” as a default rather than an initialization that always happens. &nbsp;IMO the current behavior is limiting and problematic in a number of ways.</div><div class=""><br class=""></div><div class="">If we make the change I am suggesting double initialization / assignment will not happen.&nbsp;</div><div class=""><br class=""></div><div class="">Maybe I should have stated the question more clearly:</div><div class=""><br class=""></div><div class="">What do you think the downsides are of allowing synthesized memberwise initialization to supercede an “initial / default value”?</div><div class=""><br class=""></div><div class="">If initializers cannot initialize the member to something other than the “initial value” then “initial values” are largely useless for immutable members. &nbsp;Every instance gets the same value, thus wasting space. &nbsp;Of course there are exceptions to this such as computed initializers, reference types, etc. where this isn’t exactly true, but in a large number of cases what is really desired is a default <b class="">value</b>&nbsp;that is used when the initializer doesn’t initialize the member with a different <b class="">value</b>.</div><div class=""><br class=""></div><div class="">Matthew</div></body></html>