I don't understand what purpose the "guard let x = x where x > 0 else {}" achieves for the compiler. Couldn't it have been designed to be "guard x > 0 else {}" and achieve the same goal?
"guard let x = x where x > 0 else {}" first unwraps the optional (check if it is not nil), then it checks if the value is greater than 0.
This is the nice thing about "guard let ...". Below the guard statement, x is no longer an optional.