<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
This code works great in Swift 2.2:<div><br /></div><div>------------</div><div><div>func foo() -&gt; (a: String, b: Int) {</div><div>&nbsp; &nbsp; return (&quot;asdf&quot;, 4)</div><div>}</div><div><br /></div><div>var z: (b: Int, a: String)</div><div>z = foo()</div><div><br /></div><div>print(&quot;\(z.0)&quot;) //4</div><div>print(&quot;\(z.1)&quot;) //asdf</div></div><div>------------<br /></div><div><br /></div><div>Notice how I have reordered a and b.</div><div><br /></div><div>As a result the meaning of .0 and .1 have changed.</div><div><br /></div><div>Can I, or am I likely to be able to, rely on this behavior going forward into Swift 2.3, Swift 3, Swift 4 and beyond?</div><div><br /></div><div><br /></div>  </body>
</html>