Swift Language
Булевы
Поиск…
Что такое Bool?
Bool - это логический тип с двумя возможными значениями: true
и false
.
let aTrueBool = true
let aFalseBool = false
Bools используются в операциях управления потоком как условия. Оператор if
использует логическое условие для определения того, какой блок кода запускать:
func test(_ someBoolean: Bool) {
if someBoolean {
print("IT'S TRUE!")
}
else {
print("IT'S FALSE!")
}
}
test(aTrueBool) // prints "IT'S TRUE!"
Отмените Bool с помощью префикса! оператор
Префикс !
оператор возвращает логическое отрицание своего аргумента. То есть, !true
возвращает false
, а !false
возвращает true
.
print(!true) // prints "false"
print(!false) // prints "true"
func test(_ someBoolean: Bool) {
if !someBoolean {
print("someBoolean is false")
}
}
Логические логические операторы
Оператор OR (||) возвращает true, если один из двух операндов имеет значение true, иначе он возвращает false. Например, следующий код оценивается как истинный, поскольку по крайней мере одно из выражений с обеих сторон оператора OR равно true:
if (10 < 20) || (20 < 10) {
print("Expression is true")
}
Оператор AND (&&) возвращает true, только если оба операнда оцениваются как истинные. Следующий пример вернет false, потому что только одно из двух выражений операнда принимает значение true:
if (10 < 20) && (20 < 10) {
print("Expression is true")
}
Оператор XOR (^) возвращает true, если один и только один из двух операндов оценивается как true. Например, следующий код вернет true, поскольку только один оператор имеет значение true:
if (10 < 20) ^ (20 < 10) {
print("Expression is true")
}
Булевы и встроенные условия
Чистый способ обработки булевых строк - использовать inline-условие с a? b: c тройной оператор, который является частью основных операций Swift.
Введенное условие состоит из трех компонентов:
question ? answerIfTrue : answerIfFalse
где question - это логическое значение, которое вычисляется, и answerIfTrue - это значение, возвращаемое, если вопрос верен, а answerIfFalse - это значение, возвращаемое, если вопрос неверен.
Вышеприведенное выражение такое же, как:
if question {
answerIfTrue
} else {
answerIfFalse
}
С встроенными условными выражениями вы возвращаете значение на основе логического:
func isTurtle(_ value: Bool) {
let color = value ? "green" : "red"
print("The animal is \(color)")
}
isTurtle(true) // outputs 'The animal is green'
isTurtle(false) // outputs 'The animal is red'
Вы также можете вызывать методы на основе логического значения:
func actionDark() {
print("Welcome to the dark side")
}
func actionJedi() {
print("Welcome to the Jedi order")
}
func welcome(_ isJedi: Bool) {
isJedi ? actionJedi() : actionDark()
}
welcome(true) // outputs 'Welcome to the Jedi order'
welcome(false) // outputs 'Welcome to the dark side'
Внутренние условные обозначения позволяют выполнять чистое однострочное вычисление булевых оценок