Уменьшение количества скобок в Swift

Кто-нибудь знает, есть ли способ использовать некоторую сокращенную строку в swift? более конкретно, оставляя фигурные скобки в таких вещах, как утверждения IF... например

if num == 0
  // Do something

вместо

if num == 0
{
  // Do something
}

Эти брекеты становятся довольно пространственными, когда у вас есть несколько вложенных IF.

PS. Я знаю, что могу сделать следующее:

if num == 0 {
  // Do something }

Но мне все еще интересно, возможно ли что-то подобное

Ответы

Ответ 1

Вы можете сделать это:

let x = 10, y = 20;
let max = (x < y) ? y : x ; // So max = 20

И так много интересного:

let max = (x < y) ? "y is greater than x" : "x is greater than y" // max = "y is greater than x"
let max = (x < y) ? true : false // max = true
let max = (x > y) ? func() : anotherFunc() // max = anotherFunc()
(x < y) ? func() : anotherFunc() // code is running func()

Этот следующий стек: http://codereview.stackexchange.com может быть лучше для вашего вопроса;)

Изменить: будьте осторожны с тройным оператором

Не делая ничего, кроме замены тройного оператора выражением if else, время сборки было уменьшено на 92,9%.

https://medium.com/@RobertGummesson/regarding-swift-build-time-optimizations-fc92cdd91e31#.42uncapwc

Ответ 2

В swift вам нужно добавить фигурные скобки, даже если в if есть только одно утверждение:

if num == 0 {
  // Do something
}

Вы не можете оставить фигурные скобки, как быстро, если инструкция работает.

Ответ 3

Вы можете использовать сокращенное выражение if, как в objective-c:

num1 < num2 ? DO SOMETHING IF TRUE : DO SOMETHING IF FALSE

Ответ 4

Обновление Swift 2.0 Способ 1:

a != nil ? a! : b

Способ 2: Сокращение, если

b = a ?? ""

Ссылка: Apple Docs: Тернарный условный оператор

и он работает,

u.dob = (userInfo["dob"] as? String) != nil ? (userInfo["dob"] as! String):""

Я заменяю строку json пустой строкой, если она равна нулю.

Изменить: добавление предложения Херардо Медина... мы всегда можем использовать сокращенное обозначение If

u.dob = userInfo["dob"] as? String ?? ""

Ответ 5

Это называется стенографическим условием if-else. Если вы участвуете в разработке iOS в Swift, вы также можете управлять своим поведением объектов пользовательского интерфейса с помощью этого свойства.

Например, - Я хочу, чтобы моя кнопка была включена только тогда, когда в текстовом поле есть текст. Другими словами, должно оставаться отключенным, если число символов в текстовом поле равно нулю.

button.enabled = (textField.characters.count > 0) ? true : false

Ответ 6

Вы всегда можете поместить все if в одну строку:

if num == 0 { temp = 0 }