title: Is `a?.let{} ?: run{}` idiomatic in Kotlin?
body: <p>I saw the following comment in a S.O. post, and I'm intrigued:</p>
  
  <blockquote>
    <p>why don't you use if for null checks? <code>a?.let{} ?: run{}</code> is only appropriate in rare cases, otherwise it is not idiomatic – voddan May 15 '16 at 7:29  <a href="https://stackoverflow.com/questions/37231560/best-way-to-null-check-in-kotlin#comment62000427_37232242">best way to null check in kotlin?</a></p>
  </blockquote>
  
  <p>Why is that construct "only appropriate in rare cases"?<br>
  The lead engineer for Kotlin says,</p>
  
  <blockquote>
    <p>run allows you to use multiple statements on the right side of an elvis operator  <a href="https://stackoverflow.com/a/51241983/6656019">https://stackoverflow.com/a/51241983/6656019</a></p>
  </blockquote>
  
  <p>although I admit that's not actually endorsing it as idiomatic.  Both of these posts seem to be from very well respected S.O. Kotlin contributors.<br>
  The post that inspired the original comment mentions that the <code>let</code> part of the expression is important if <code>a</code> is mutable.  In that case, you'll need <code>a?.let{} ?: run{}</code> instead of <code>if{} else {}</code>.</p>
  
  <p>I find I like the "let Elvis run" construct.  Should I avoid it in most cases?<br>
  Thanks for any insight.</p>