<div dir="ltr">Optional is already CustomStringConvertible. Again, this was done on purpose (that&#39;s not an argument to keep it this way, though). <a href="https://github.com/apple/swift/blob/master/stdlib/public/core/Optional.swift#L260">Source</a></div><br><div class="gmail_quote"><div dir="ltr">On Wed, May 18, 2016 at 6:33 PM David Sweeris via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We could make Optional conform to CustomStringConvertible:<br>
var description: String {<br>
    switch self {<br>
        case .some(let x): return &quot;\(x)&quot;<br>
        case .none: return &quot;\(Wrapped.self)?.none&quot;<br>
    }<br>
}<br>
<br>
- Dave Sweeris<br>
<br>
&gt; On May 18, 2016, at 15:56, Michael Peternell via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Well, I wouldn&#39;t deprecate them.<br>
&gt;<br>
&gt; Maybe it should print something different: the value itself if it is not nil, and &quot;nil&quot; otherwise?<br>
&gt;<br>
&gt; Or there may be an optional warning for this case.<br>
&gt;<br>
&gt; Or maybe both. But not just deprecate the feature altogether. It will make people use the &quot;!&quot; instead in unsafe places (like &quot;\(someOptional!)&quot;) - it&#39;s better not to crash and print something strange instead. Especially when in production.<br>
&gt;<br>
&gt; -Michael<br>
&gt;<br>
&gt;&gt; Am 18.05.2016 um 20:50 schrieb Krystof Vasa via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt; The string interpolation is one of the strong sides of Swift, but also one of its weaknesses.<br>
&gt;&gt;<br>
&gt;&gt; It has happened to me more than once that I&#39;ve used the interpolation with an optional by mistake and the result is then far from the expected result.<br>
&gt;&gt;<br>
&gt;&gt; This happened mostly before Swift 2.0&#39;s guard expression, but has happened since as well.<br>
&gt;&gt;<br>
&gt;&gt; The user will seldomly want to really get the output &quot;Optional(something)&quot;, but is almost always expecting just &quot;something&quot;. I believe this should be addressed by a warning to force the user to check the expression to prevent unwanted results. If you indeed want the output of an optional, it&#39;s almost always better to use the ?? operator and supply a null value placeholder, e.g. &quot;\(myOptional ?? &quot;&lt;&lt;none&gt;&gt;&quot;)&quot;, or use myOptional.debugDescription - which is a valid expression that will always return a non-optional value to force the current behavior.<br>
&gt;&gt;<br>
&gt;&gt; Krystof<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-evolution mailing list<br>
&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt; <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>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">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><div dir="ltr">-- <br></div><div><div dir="ltr"><div><div>Dan Appel<br></div></div></div></div>