Как преобразовать следующее в Swift из Objective-C?
if (myVar) return;
Swift не использует круглые скобки вокруг условного выражения, однако следующий код дает ошибку.
if myVar return
Как преобразовать следующее в Swift из Objective-C?
if (myVar) return;
Swift не использует круглые скобки вокруг условного выражения, однако следующий код дает ошибку.
if myVar return
В Swift фигурные скобки не являются необязательными, как в Objective-C (C). Parens, с другой стороны, являются необязательными. Примеры:
Действительный Swift:
if someCondition {
// stuff
}
if (someCondition) {
// stuff
}
Недействительный Swift:
if someCondition
// one liner
if (someCondition)
// one liner
Это конструктивное решение устраняет целый класс ошибок, которые могут возникнуть из-за неправильного использования оператора if без фигурных скобок, таких как следующий случай, где не всегда может быть ясно, что значение something
будет изменено условно, но значение somethingElse
будет меняться каждый раз.
Bool something = true
Bool somethingElse = true
if (anUnrelatedCondition)
something = false
somethingElse = false
print something // outputs true
print somethingElse // outputs false
Ну, как другие ребята также объяснили, что фигурные скобки являются обязательными в быстром. Но для простоты всегда можно сделать что-то вроде:
let a = -5
// if the condition is true then doThis() gets called else doThat() gets called
a >= 0 ? doThis(): doThat()
func doThis() {
println("Do This")
}
func doThat() {
println("Do That")
}
Одна строка if
, одна строка while
и одна строка for
считаются плохим стилем для многих разработчиков, потому что они менее читабельны и якобы являются источником многих ошибок.
Свифт разрешил головоломку, запретив однолинейные инструкции по управлению потоком; скобки не являются необязательными...
if someCondition {
// stuff
}
Конечно, вы все равно можете
if someCondition { return }
Есть также причины внедрения. Наличие скобок вокруг условия как необязательного делает синтаксический анализ намного сложнее. Принудительная привязка упрощает синтаксический анализ.
Вы можете использовать новый оператор Nil-Coalescing, так как Swift 3 в случае, если вам нужно просто установить значение по умолчанию в случае сбоя:
let someValue = someOptional ?? ""
В случае, если someOptional является false
, этот оператор присваивает "" некоторым значениям
var dataDesc = (value == 7) ? "equal to 7" : "not equal to 7"
Вот простое решение, которое я использовал в своих проектах.
Swift 3 +
var retunString = (state == "OFF") ? "securityOn" : "securityOff"