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

Быстрое inline условное?

Как это сделать в Swift?

(someboolexpression ? "Return value 1" : "Return value 2")

(нет, я еще не прочитал все руководство... Я, вероятно, пропустил его на странице 2!)

ОК, поэтому его на стр. 91 и выше отображаются правильно. Однако я пытаюсь использовать это в строке следующим образом:

println(" some string \(some expression ? "Return value 1" : "Return value 2")"

но компилятор не доволен. Любая идея, если это возможно?

Это так близко, что я смог получить

let exists = "exists"
let doesnotexist= "does not exist"

println("  something \(fileExists ? exists : doesnotexist)")
4b9b3361

Ответ 1

Если вы ищете один лайнер для этого, вы можете вывести операцию ?: из интерполяции строк и объединить с помощью + вместо:

let fileExists = false // for example
println("something " + (fileExists ? "exists" : "does not exist"))

Выходы:

что-то не существует

Ответ 2

var firstBool = true
var secondBool: Bool

firstBool == true ? (secondBool = true) : (secondBool = false)

Если в этом случае он изменяет secondBool на то, что имеет первыйBool. Вы можете сделать это с помощью целых чисел и строк.

Ответ 3

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

let someValue = someOptional ?? ""

Если if someOptional false, этот оператор присваивает "" someValue

Ответ 4

Ты был так близко. Просто нужно присвоить его переменной:

self.automaticOption = (automaticOptionOfCar ? "Automatic" : "Manual")

Edit:

Любая идея, почему это же выражение не может быть встроено в строку?

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

let a = true
let b = 1
let c = 2

println("\(a ? 1: 2)")

Ответ 5

Ну,

Если вы соедините условное с строкой с помощью оператора +, она должна работать.

Поэтому Майк прав.

var str = "Something = " + (1 == 1 ? "Yes" : "No")

Ответ 6

Он называется " тернарный оператор".

Что касается ответа @Esqarrouth, я думаю, что лучшим форматом будет:

Swift 3:

var firstBool = true
var secondBool: Bool

secondBool = firstBool ? true : false

Это то же самое, что:

var firstBool = true
var secondBool: Bool

if (firstBool == true) {
    secondBool = true
} else {
    secondBool = false
}

Ответ 7

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

Swift 3 +

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

Ответ 8

Я использую inline условно:

isFavorite возвращает Boolen

favoriteButton.tintColor = CoreDataManager.sharedInstance.isFavorite(placeId: place.id, type: 0) ? UIColor.white : UIColor.clear

tourOperatorsButton.isHidden = place.operators.count != 0 ? true : false