<div dir="ltr"><div>(this is mostly a repost of a message I sent to the "[draft]" thread for this proposal, with some light editing to better match terminology in the proposal)</div><div><br></div><div><b>What is your evaluation of the proposal?</b></div><div><br></div><div>I like this proposal. I think it will bring some much-needed ease-of-use.</div><div><br></div><div>I have reservations about the "<font face="monospace, monospace">...</font>" placeholder for the memberwise initialization parameters, though. I know this was suggested by Chris Lattner, so I'm inclined to defer to his judgement. But, here are my thoughts:</div><div><br></div><div>First, it's very close to the varags syntax (e.g. "<font face="monospace, monospace">Int...</font>") which can also appear in initializer parameter lists.</div><div><br></div><div>Second, and I think more important, I'm not sure that it's all that <i>useful</i>. It's presence isn't necessary for triggering memberwise initialization synthesis; that is already done by the "memberwise" keyword.</div><div><br></div><div>The primary example given in the proposal is:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="monospace, monospace">memberwise init(anInt: Int, anotherInt: Int, ...) {</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="monospace, monospace"> /* code using anInt and anotherInt */</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="monospace, monospace">}</font></div></blockquote><div><br></div><div>That is, it's used to indicate where the synthesized parameters appear in the parameter list if there are also custom (non-memberwise) parameters.</div><div><br></div><div>My question is, <b>could the memberwise initialization parameters always be last?</b> That would eliminate the need for the placeholder.</div><div><br></div><div>I don't think I've seen a compelling case for embedding the "<font face="monospace, monospace">...</font>" <i>within</i> a list of custom arguments, like:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="monospace, monospace">memberwise init(anInt: Int, ..., anotherInt: Int) {</font></div><div><font face="monospace, monospace"> /* code using anInt and anotherInt */</font></div><div><font face="monospace, monospace">}</font></div></blockquote><div><br></div><div>It's been mentioned several times in the discussion of this proposal that this behavior is purely optional. If it turns out that there are rare cases where placing the memberwise params in the middle is useful, authors can use manual initialization.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 6, 2016 at 2:47 PM, Chris Lattner via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Swift community,<br>
<br>
The review of "Flexible Memberwise Initialization" begins now and runs through January 10th. The proposal is available here:<br>
<br>
<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0018-flexible-memberwise-initialization.md" rel="noreferrer" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0018-flexible-memberwise-initialization.md</a><br>
<br>
Reviews are an important part of the Swift evolution process. All reviews should be sent to the swift-evolution mailing list at<br>
<br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
or, if you would like to keep your feedback private, directly to the review manager.<br>
<br>
What goes into a review?<br>
<br>
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>
<br>
* What is your evaluation of the proposal?<br>
* Is the problem being addressed significant enough to warrant a change to Swift?<br>
* Does this proposal fit well with the feel and direction of Swift?<br>
* If you have you used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?<br>
* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?<br>
<br>
More information about the Swift evolution process is available at<br>
<br>
<a href="https://github.com/apple/swift-evolution/blob/master/process.md" rel="noreferrer" target="_blank">https://github.com/apple/swift-evolution/blob/master/process.md</a><br>
<br>
Thank you,<br>
<br>
-Chris<br>
Review Manager<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><br></div><div><div dir="ltr" style="font-size:12.8000001907349px"><b style="font-size:small;background-color:transparent"><span style="color:rgb(53,217,144)"><font face="arial, helvetica, sans-serif">Alex Johnson</font></span><font color="#666666"> | Engineering Lead</font></b></div><div dir="ltr" style="font-size:12.8000001907349px"><b style="font-size:12.8000001907349px"><font color="#666666"><br></font></b></div><div dir="ltr" style="color:rgb(68,68,68);font-family:Arial,Verdana,sans-serif;font-size:12.8000001907349px"><div style="font-family:arial,sans-serif;color:rgb(34,34,34);font-size:12.8000001907349px"><b style="font-family:Arial;font-size:small;line-height:14.9499998092651px;white-space:pre-wrap"><a href="https://quickleft.com/" style="color:rgb(0,51,204)" target="_blank"><font color="#000000">Quick Left, Inc.</font></a></b></div><div style="font-family:arial,sans-serif;color:rgb(34,34,34);font-size:12.8000001907349px"><span style="color:rgb(0,0,0);font-family:Arial;white-space:pre-wrap;line-height:1.15;font-size:small;background-color:transparent"><b>Boulder </b></span><span style="font-size:12.8000001907349px"><font color="#999999"><b>|</b></font></span><b style="color:rgb(0,0,0);font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent"> </b><b style="color:rgb(0,0,0);font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent">Denver</b><font color="#999999" style="font-size:12.8000001907349px;background-color:transparent"><b style="font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent"> </b><span style="font-size:12.8000001907349px"><b>|</b></span></font><b style="color:rgb(0,0,0);font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent"> </b><b style="color:rgb(0,0,0);font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent">Portland</b><font color="#999999" style="font-size:12.8000001907349px;background-color:transparent"><b><span style="font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent"> </span><span style="font-size:12.8000001907349px">|</span></b></font><b style="color:rgb(0,0,0);font-family:Arial;font-size:small;line-height:1.15;white-space:pre-wrap;background-color:transparent"> San Francisco</b></div><div><font style="font-size:12.8000001907349px"><p style="line-height:1.15;font-size:12.8000001907349px;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(102,102,102);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;background-color:transparent">1 (844) QL-NERDS</span></p><p style="font-size:12.8000001907349px;margin-top:0pt;margin-bottom:0pt"><font color="#666666" face="arial, sans-serif">@nonsensery</font></p><p style="font-family:arial,sans-serif;color:rgb(34,34,34);margin:0px"><br></p></font><p dir="ltr" style="line-height:1.15;font-size:12.8000001907349px;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><a href="https://github.com/quickleft" style="color:rgb(0,51,204)" target="_blank"><img src="http://i.imgbox.com/MNlkdRf3.png" style="border:0px;padding:0px;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;white-space:normal;vertical-align:middle!important" alt=""></a><a href="https://www.facebook.com/quickleft" style="color:rgb(0,51,204)" target="_blank"><img src="http://i.imgbox.com/mZ3v7rXp.png" style="border:0px;padding:0px;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;white-space:normal;vertical-align:middle!important" alt=""></a><a href="https://twitter.com/quickleft" style="color:rgb(0,51,204)" target="_blank"><img src="http://i.imgbox.com/C2qj69cx.png" style="border:0px;padding:0px;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;white-space:normal;vertical-align:middle!important" alt=""></a><a href="https://instagram.com/quick_left/" style="color:rgb(0,51,204)" target="_blank"><img src="http://i.imgbox.com/3kcv532Y.png" style="border:0px;padding:0px;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;white-space:normal;vertical-align:middle!important" alt=""></a><a href="https://www.flickr.com/photos/quickleft" style="color:rgb(0,51,204)" target="_blank"><img src="http://i.imgbox.com/qrtOZXDo.png" style="border:0px;padding:0px;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;white-space:normal;vertical-align:middle!important" alt=""></a><a href="https://vimeo.com/quickleft" style="color:rgb(0,51,204)" target="_blank"><img src="http://i.imgbox.com/lv7fDapY.png" style="border:0px;padding:0px;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;line-height:normal;white-space:normal;vertical-align:middle!important" alt=""></a></span></p><p dir="ltr" style="line-height:1.15;font-size:12.8000001907349px;margin-top:0pt;margin-bottom:0pt"><br></p><p dir="ltr" style="line-height:1.15;font-size:12.8000001907349px;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><font size="2"><a value="+13032425536" style="color:rgb(17,85,204);text-decoration:underline"></a></font></span></p><div style="font-family:arial,sans-serif"><span style="vertical-align:baseline;white-space:pre-wrap"><span style="color:rgb(53,217,144)"><font face="arial, helvetica, sans-serif" size="2"><b>What's it like to work with us? </b></font></span><font style="font-size:12.8000001907349px;font-family:Arial"><i style="color:rgb(0,0,0);font-family:arial,sans-serif;white-space:normal">TrainingPeaks, iTriage, and Ping Identity share their stories in this short video</i><i style="font-family:arial,sans-serif;white-space:normal"><font color="#500050"> </font><a href="https://vimeo.com/92286352" style="color:rgb(0,51,204)" target="_blank"><font color="#666666">A Client's View</font></a></i><span style="font-family:arial,sans-serif;white-space:normal"><font color="#666666">.</font></span></font></span></div></div></div></div></div></div></div></div>
</div>