Уменьшение количества скобок в 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 }