Yas*_*ddy 56 ternary-operator swift
我想使用一个可选变量与三元条件运算符,但它抛出错误此错误:可选不能用作布尔值.我究竟做错了什么?
var str1: String?
var myBool:Bool
myBool = str1 ? true : false
Run Code Online (Sandbox Code Playgroud)
Dha*_*esh 81
你不能将字符串值赋给bool,但你可以检查str1是否为nil或者不是这样的:
myBool = str1 != nil ? true : false
print(myBool)
Run Code Online (Sandbox Code Playgroud)
它将打印为false,因为str1为空.
Abh*_*eet 65
也可以使用Nil Coalescing Operator.下面的代码使用三元条件运算符和强制解包(a!)来访问包含在a不是nil时的值,否则返回b
普通三元算子:
output = a != nil ? a! : b
Apple Developer Link:请参阅演示链接
在Swift 1.2和2中,上面的代码行被更短的格式替换:
output = a ?? b
Run Code Online (Sandbox Code Playgroud)
演示链接:nil合并运算符(a ?? b)如果包含值,则展开可选a;如果a为n,则返回默认值b.
如果您想要的值是可选属性(在Swift 3.0中)的属性或函数调用的结果,则这甚至可以很好地工作:
return peripheral?.connected ?? false
Run Code Online (Sandbox Code Playgroud)
三元运算符针对三个目标进行操作。与C一样,Swift也只有一个三元运算符,即三元条件运算符(a?b:c)。
用法示例tableView-
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return section == 2 ? 4 : 1
}
Run Code Online (Sandbox Code Playgroud)
指示段是否等于2,则返回4,否则返回1(如果为false)。
| 归档时间: |
|
| 查看次数: |
56742 次 |
| 最近记录: |