title: What is the difference between not-null checks in Kotlin?
body: <p>There are some ways to fulfill a null-checking in Kotlin:</p>
  
  <p>1.</p>
  
  <pre><code>if(myVar != null) {
      foo(myVar)
  }
  </code></pre>
  
  <p>2.</p>
  
  <pre><code>myVar?.let { 
      foo(it)
  }
  </code></pre>
  
  <p>3.</p>
  
  <pre><code>myVar?.run { 
      foo(this)
  }
  </code></pre>
  
  <p>What are the difference between these ways?</p>
  
  <p>Are there any reasons (performance, best practice, code style etc.) why I should prefer on way over the other?</p>