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" 
  • 我如何声明一个具有types和实现协议的variables?
  • Swift中'fileprivate'关键字的含义是什么?
  • 取消Swift中的定时事件?
  • Swift中的状态栏高度
  • Swift扩展的例子
  • 等待swift循环,asynchronousnetworking请求完成执行
  • 如何通过忽略它的关联值在Swift中比较枚举和关联的值?
  • iOS:删除所有核心数据Swift
  • Swift语言中的error handling
  • swift在编译Xcode时退出代码1失败 - 可能与Bridging-Headers有关
  • 如何创build一个全局variables?