<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="">
<div>
<blockquote type="cite" class="">
<div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Talking
 of Python, Swift is not Python and the argument not to implement a feature because its semantics conflict with the semantics of a similar looking feature in another language is bogus. I don’t see the Python for … else being different (and having looked it
 up to see what you all were talking about, my opinion is that the Python for … else is a disaster) as being a legitimate con to this cleaner and more logical idea in Swift.</span></div>
</blockquote>
</div>
<br class="">
<div class="">Swift is not Python, but Python programmers do program in Swift. Yeah they can look up the documentation and see that the semantics is not the same, but that is definitely error-prone.</div>
<div class=""><br class="">
</div>
<div class="">While this kind of construct happen quite often, I am not for changing the syntax of a for-loop. To be honest, I don’t think that &quot;for { .. } else { .. }” is so clear intuitive and I think that I would choose most if not all of the other constructions
 that have been proposed to express the OP’s problem.</div>
<div class=""><br class="">
</div>
<div class="">
<blockquote type="cite" class="">Maybe we can add a new parameter &quot;otherwise&quot; to the forEach method<br class="">
<br class="">
[1,2,3,4].forEach({<br class="">
// do something<br class="">
}<br class="">
, otherwise: {<br class="">
// do something if it is an empty array<br class="">
})</blockquote>
<br class="">
</div>
<div class="">The problem with this approach is that it would prevent the body of the for-loop to be expressed with a trailing closure.</div>
<div class=""><br class="">
</div>
</body>
</html>