<div dir="ltr">I don&#39;t think you can just get rid of the if statement in favor of an expression. You still want to be able to do this:<div><br></div><div>if (condition) {</div><div>    funcWithSideEffectsThatReturnsInt()</div><div>} else {</div><div>    funcWithSideEffectsThatReturnsString()</div><div>}</div><div><br></div><div>but that&#39;s not a valid expression (what is its type?).</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Dec 5, 2015 at 7:24 PM, Ole Begemann via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yeah, returning an optional is a good idea.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; On 06 Dec 2015, at 01:22, Adam C. Lickel &lt;<a href="mailto:adam@lickel.com">adam@lickel.com</a>&gt; wrote:<br>
&gt;<br>
&gt; In that situation, the if statement could return a Void? where the else implicitly returns nil<br>
&gt;<br>
&gt;&gt; On Dec 5, 2015, at 3:12 PM, Ole Begemann via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt;&gt; This is subtle and requires thought<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What do you envision as the pitfalls of the design thinking behind if/switch expressions? I’m not a compiler programmer, but a prog-lang enthusiast. I wouldn’t mind a little nudge in the right direction.<br>
&gt;&gt;<br>
&gt;&gt; One thing that comes to mind is that if &quot;if&quot; is an expression, every if needs an else branch. This makes it harder to use if to conditionally perform side effects. For example, this is currently valid:<br>
&gt;&gt;<br>
&gt;&gt; func doSomething() { ... }<br>
&gt;&gt;<br>
&gt;&gt; if condition {<br>
&gt;&gt;   doSomething()<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt; Should this be allowed? You could argue that this should work because (a) the expression result is unused and (b) the return type of doSomething is Void, so the compiler could conceivably implicitly construct an else branch that returns (). But it would be inconsistent with other expressions. Disallowing this style could make writing typical &quot;imperative&quot; code harder.<br>
&gt;&gt;<br>
&gt;&gt; – Ole<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>
</div></div></blockquote></div><br></div>