<head></head><body>Hey All,<div><div><br></div><div>I think Andrew already pointed out the solution.&nbsp;</div><div><br></div><div>In first place I wasn't sure if there was a syntax to express the Optionality of a variable while keeping the inference type.</div><div><br></div><div>I was just suggesting to use the "?" syntax to do so:</div><div><br></div><div><div style="line-height: 19.6px;">```</div><div style="line-height: 19.6px;"><div>// Optional string &nbsp;with an existing without declaring a specific type except it's optionality, gaining for free the String type inference</div>var c: ? = "I could become nil"</div><div style="line-height: 19.6px;"><div>```</div><div><br></div><div>But Andrew pointed out that an alternative syntax already exist:</div></div></div><div><br></div><div><div>```</div>var a: Optional = "I could become nil"<br>var b:Optional&lt;String&gt; = "me too"<br>```</div><div><div><br></div><div>And thanks to Erika, another one:</div><div><br></div><div>```</div><div>let c = Optional("Also me, thanks to Erika")<br></div><div>```</div><div><br></div><div>I think it could still make sense to allow the "?" syntax previously described, as it is more synthetic than the other one and match the Optional usage (with "?") and could also be completed with a "!" syntax:</div><div><br></div><div><div style="line-height: 19.6px;">```</div><div style="line-height: 19.6px;"><div>// Optional String with an existing value as a String using inference type</div>var e:? = "I'm a synthetic version of the above"</div><div style="line-height: 19.6px;">// equivalent of</div><div style="line-height: 19.6px;">var f: Optional =&nbsp;&nbsp;"I'm a synthetic version of the above"</div><div style="line-height: 19.6px;"><br></div><div style="line-height: 19.6px;">// Unwrapped Optional with an existing&nbsp;as a String using inference type</div><div style="line-height: 19.6px;">var g:! = "I could be nil but will crash if access directly"</div><div style="line-height: 19.6px;">// equivalent of</div><div style="line-height: 19.6px;">var h:Optional = "I could be nil but will crash if access directly"</div><div style="line-height: 19.6px;"><div>```</div></div></div></div><div><br></div><div>To close (or open for who wants to) this debate, I think Optional have already enough syntax.</div><div><br></div><div>Hugues</div><div><br></div></div><div class="gmail_quote">
  On Mar 31 2016, at 4:22 pm, Erica Sadun &lt;erica@ericasadun.com&gt; wrote:
  <br>
  <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
    <meta content="text/html charset=us-ascii"><br><div><blockquote type="cite"><div>On Mar 24, 2016, at 4:22 AM, Hugues Bernet-Rollande via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:</div><div><div><div><div>```</div><div>var a:String? = String()</div><div>// or</div><div>var b = String() as String?</div><div>// or</div><div>var c:Optional&lt;String&gt; = String()<br></div><div>```</div></div></div></div></blockquote><br></div><div>When I need to force an optional (primarily for sample code) I can do this already:</div><div><br></div><div>```</div><div>var myOptionalString = Optional("")</div><div>```</div><div><br></div><div>In this example, `myOptionalString&nbsp;` picks up the type as well as the optionality.</div><div>Does this not meet your requirement of "<i>Allowing to specify only the optionality part of&nbsp;</i></div><div><i>a variable type&nbsp;</i><i>while still having the actual wrapped type infered by the assignement</i>" in existing</div><div>Swift?</div><div><br></div><div>Beyond that, can you offer any compelling use-cases that motivate this change?</div><div><br></div><div>-- E</div><div><br></div><br>
  </blockquote>
</div></body>