Сначала вы определяете isBelow как false, а затем в своих операторах if вы определяете новую константу, называемую isBelow. Эта новая константа имеет то же имя, что и выше, но на самом деле совершенно другая. Когда вы находитесь вне своих операторов if, то, что вы создали внутри операторов if, больше не существует, и он просто возвращает тот, который вы впервые создали. Вы фактически не меняете первый isBelow, который вы первоначально устанавливаете.
То, что вы на самом деле пытаетесь сделать может быть выполнено следующим образом:
func isBelow13(number: Int) -> Bool {
var isBelow: Bool = false
if number < 13 {
isBelow = true
} else {
isBelow = false
}
return isBelow
}
isBelow13(number: 11) // returns true
isBelow13(number: 14) // returns false
Таким образом, вы создаете переменную, которая может быть повторно назначен «вар» вместо «пусть», а затем вы изменяя значение этой переменной на основе условия if. Затем вы возвращаете это измененное значение. Имеют смысл?
Более краткий вариант того же приведенный выше код будет выглядеть следующим образом: (С @MartinR в комментарии)
func isBelow13(number: Int) -> Bool {
return number < 13
}
Выражение number < 13
возвращает логическое значение, так что вы можете просто вернуть результат этого выражения от вашей функции.
Если вы не можете понять, почему ваш код не работает должным образом: поместите его в * скомпилированный проект * вместо игровой площадки, а затем используйте * отладчик *. Установите контрольные точки, одношаговые, проверьте переменные , * Узнайте *, чтобы найти ошибки. –