← Back to context

Comment by willtemperley

10 hours ago

I'm surprised, guard is really useful, especially when unwrapping optionals. It's terse, explicit and encourages defensive programming.

internal should definitely go though.

The absence of guard in Kotlin is one of those things that regularly trips me up when bouncing between it and Swift. Rather than Swift losing guard I’d prefer if Kotlin gained it.

  • I think the ?: operator ends up being a decent alternative, e.g.

      // Swift
      guard let foo = maybeFoo else {
        print("missing foo")
        return false
      }
    
      // Kotlin
      val foo = maybeFoo ?: run {
        print("missing foo")
        return false
      }
    

    Unless there's a use case for guard I'm not thinking of