title: How to "strongify" optional self using guard in Swift 2.0
body: <p>There's a <a href="https://stackoverflow.com/questions/26941406/how-to-achieve-same-behavior-as-with-strongify-in-swift">similar question</a> about how to <code>weakify</code>/<code>strongify</code> self, which is answered, but I'm wondering how to use "self" without rightward-drifting caused by <code>if let</code>:</p>
  
  <pre><code>Welcome to Apple Swift version 2.0 (700.0.59 700.0.72). Type :help for assistance.
    2&gt; import Foundation
    3&gt; class Foo {
    4.     func guardOptSelf() -&gt; () throws -&gt; Void {
    5.         return { [weak self] in
    6.             guard let self = self else { throw NSError(domain: "I was destroyed!", code: 1, userInfo: nil) }
    7.             self.doSomethingNonOptionalSelf()         
    8.         }
    9.     }
    10. }
  repl.swift:6:19: error: pattern matching in a condition requires the 'case' keyword
              guard let self = self else { throw NSError(domain: "I was destroyed!", code: 1, userInfo: nil) }
                    ^
                    case
  repl.swift:6:23: error: binary operator '~=' cannot be applied to two 'Foo?' operands
              guard let self = self else { throw NSError(domain: "I was destroyed!", code: 1, userInfo: nil) }
  </code></pre>