Подтвердить что ты не робот

Вывод строки в строке Swift

Как преобразовать следующее в Swift из Objective-C?

if (myVar) return;

Swift не использует круглые скобки вокруг условного выражения, однако следующий код дает ошибку.

if myVar return 
4b9b3361

Ответ 1

В 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

Ответ 2

Ну, как другие ребята также объяснили, что фигурные скобки являются обязательными в быстром. Но для простоты всегда можно сделать что-то вроде:

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")
}

Ответ 3

Одна строка if, одна строка while и одна строка for считаются плохим стилем для многих разработчиков, потому что они менее читабельны и якобы являются источником многих ошибок.

Свифт разрешил головоломку, запретив однолинейные инструкции по управлению потоком; скобки не являются необязательными...

if someCondition {
     // stuff
}

Конечно, вы все равно можете

if someCondition { return }

Есть также причины внедрения. Наличие скобок вокруг условия как необязательного делает синтаксический анализ намного сложнее. Принудительная привязка упрощает синтаксический анализ.

Ответ 4

Вы можете использовать новый оператор Nil-Coalescing, так как Swift 3 в случае, если вам нужно просто установить значение по умолчанию в случае сбоя:

let someValue = someOptional ?? ""

В случае, если someOptional является false, этот оператор присваивает "" некоторым значениям

var dataDesc = (value == 7) ? "equal to 7" : "not equal to 7"

Ответ 5

Вот простое решение, которое я использовал в своих проектах.

Swift 3 +

var retunString = (state == "OFF") ? "securityOn" : "securityOff"