Swift内联条件?

Dun*_*ald 72 conditional swift

我如何在Swift中执行此操作?

(someboolexpression ? "Return value 1" : "Return value 2")
Run Code Online (Sandbox Code Playgroud)

(不,我还没有阅读整本手册......我可能在第2页错过了它!)

好,所以它在第91页和上面似乎是正确的.但是我试图在这样的字符串中使用它:

println(" some string \(some expression ? "Return value 1" : "Return value 2")"
Run Code Online (Sandbox Code Playgroud)

但编译器不高兴.如果可能的话,有任何想法吗?

这是我能够得到的尽可能接近

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

println("  something \(fileExists ? exists : doesnotexist)")
Run Code Online (Sandbox Code Playgroud)

Mik*_*e S 116

如果你正在寻找一个单行代码,你可以?:从字符串插值中取出操作并连接+:

let fileExists = false // for example
println("something " + (fileExists ? "exists" : "does not exist"))
Run Code Online (Sandbox Code Playgroud)

输出:

某些东西不存在


Vit*_*nko 22

您可以使用Swift 3中引入的新Nil-Coalescing Operator.如果是,它将返回默认值someOptionalnil

let someValue = someOptional ?? ""
Run Code Online (Sandbox Code Playgroud)

如果someOptional为false,则此运算符分配nil""


Esq*_*uth 19

var firstBool = true
var secondBool: Bool

firstBool == true ? (secondBool = true) : (secondBool = false)
Run Code Online (Sandbox Code Playgroud)

如果在这种情况下,它将secondBool更改为firstBool.您也可以使用整数和字符串来完成此操作


Ray*_*Tso 7

它称为“ 三元运算符 ”。

关于@Esqarrouth的答案,我认为更好的格式是:

斯威夫特3:

var firstBool = true
var secondBool: Bool

secondBool = firstBool ? true : false
Run Code Online (Sandbox Code Playgroud)

这与:

var firstBool = true
var secondBool: Bool

if (firstBool == true) {
    secondBool = true
} else {
    secondBool = false
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*erg 6

你太近了哦.只需要将它分配给变量:

self.automaticOption = (automaticOptionOfCar ? "Automatic" : "Manual")
Run Code Online (Sandbox Code Playgroud)

编辑:

知道为什么同一个表达式不能嵌入字符串中吗?

你可以这样做:

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

println("\(a ? 1: 2)")
Run Code Online (Sandbox Code Playgroud)


Sat*_*man 6

我在项目中使用的简单解决方案

斯威夫特 3+

var retunString = (state == "OFF") ? "securityOn" : "securityOff"
Run Code Online (Sandbox Code Playgroud)


Tan*_*shi 5

好,

如果使用+运算符将条件与字符串连接在一起,则它应该起作用。

因此,迈克是正确的。

var str = "Something = " + (1 == 1 ? "Yes" : "No")
Run Code Online (Sandbox Code Playgroud)


Ser*_*ejo 5

我使用像这样的内联条件:

isFavorite 函数返回一个布尔值

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

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