If you forget "else" compiler will complain that "bullet" is not initialised. In other words compiler gives you a guarantee that "let bullet: String" is definitely initialised at some point (and definitely before it is used). Contrary to the case where you have, say, "var bullet: String!" (strictly speaking in that case the bullet is also initialised (to nil) which may not be expected by the following code).