Почему Guard позволяет x = x внутри метода вести себя иначе, чем снаружи?
Пример кода ниже скопирован прямо из Playground.
var x:Int? = 3
func foo(x: Int?) {
guard let x = x else {
return
}
print(x) // print "3\n"
}
foo(x)
guard let x = x else {
throw NSError(domain: "app", code: 0, userInfo: nil)
}
print(x) // print "Optional(x)\n"