Swift内联条件?

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

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

(不,我还没有读完整本手册…我可能在第2页上错过了!)

好,所以它在第91页和上面看起来是正确的。 不过,我试图用这样的string:

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

但编译器不开心。 任何想法如果这可能吗?

这和我所能得到的一样接近

 let exists = "exists" let doesnotexist= "does not exist" println(" something \(fileExists ? exists : doesnotexist)") 

7 Solutions collect form web for “Swift内联条件?”

如果你正在寻找一个单线程来做到这一点,你可以将?:操作从string插值中提取出来,并用+连接起来:

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

输出:

一些东西不存在

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

如果在这种情况下,它会将secondBool更改为firstBool。 你可以用整数和string来做到这一点

你可以使用新的Nil-Coalescing运算符 ,因为Swift 3在你需要设置默认值的情况下, if失败:

 let someValue = someOptional ?? "" 

如果someOptional为false,则该运算符将""赋值给someValue

你真是太亲密了 只需要将其分配给一个variables:

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

编辑:

任何想法为什么相同的expression式不能embedded到一个string?

你可以这样做:

 let a = true let b = 1 let c = 2 println("\(a ? 1: 2)") 

好,

如果使用+运算符连接条件和string,它应该工作。

所以Mike是正确的。

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

它被称为“ 三元操作符 ”。

关于@ 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 } 

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

Swift 3+

 var retunString = (state == "OFF") ? "securityOn" : "securityOff" 
  • 如何在“”内打印双引号?
  • 如何在Swift语言的字典中添加不同的types?
  • 在Swift中从userInfo获取键盘大小
  • Swift在大写“自我”和小写“自我”之间的区分
  • 如何在Swift中打印variables的types或类?
  • 不支持使用某些协议作为符合其他协议的具体types
  • 为什么在一个协议中只能得到一个只能得到的属性需求才能被一个符合的属性满足?
  • 获取一个string的长度
  • 检查是否在Core Data中设置了属性?
  • 如果让逻辑AND运算符&&使用Swift &&
  • 我如何声明一个具有types和实现协议的variables?