怎么区分模板网站和定制网站,html特效网站,软件开发培训通知,做seo推广网站空合运算符#xff08;Nil Coalescing Operator#xff09; 用于取代3目判空运算#xff0c;提供超短的写法比如常规判空写法如下#xff0c;反正我写java就是这么干的 var anOptionalInt: Int? 10var anInt: Int 0if anOptionalInt ! nil {
anInt anOptionalInt!
} 空…空合运算符Nil Coalescing Operator 用于取代3目判空运算提供超短的写法比如常规判空写法如下反正我写java就是这么干的 var anOptionalInt: Int? 10var anInt: Int 0if anOptionalInt ! nil {
anInt anOptionalInt!
} 空合运算符a ?? b将对可选类型 a 进行空判断如果 a 包含一个值就进行解封否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。 空合运算符是对以下代码的简短表达方法 a ! nil ? a! : b 上述代码使用了三元运算符。当可选类型 a 的值不为空时进行强制解封a!访问 a 中的值反之返回默认值 b。无疑空合运算符??提供了一种更为优雅的方式去封装条件判断和解封两种行为显得简洁以及更具可读性。 下文例子采用空合运算符实现了在默认颜色名和可选自定义颜色名之间抉择 let defaultColorName red
var userDefinedColorName: String? //默认值为 nilvar colorNameToUse userDefinedColorName ?? defaultColorName
// userDefinedColorName 的值为空所以 colorNameToUse 的值为 red userDefinedColorName 变量被定义为一个可选的 String 类型默认值为 nil。由于 userDefinedColorName 是一个可选类型我们可以使用空合运算符去判断其值。在上一个例子中通过空合运算符为一个名为 colorNameToUse 的变量赋予一个字符串类型初始值。 由于 userDefinedColorName 值为空因此表达式 userDefinedColorName ?? defaultColorName 返回 defaultColorName 的值即 red。 闭区间运算符 区间运算用于循环闭区间意思是全部范围都需要用于替代(i1 i5) for index in 1...5 {
print(\(index) * 5 \(index * 5))
}
// 1 * 5 5
// 2 * 5 10
// 3 * 5 15
// 4 * 5 20
// 5 * 5 25 半开区间运算符 半开区间运算符a..b定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间是因为该区间包含第一个值而不包括最后的值。 半开区间的实用性在于当你使用一个从 0 开始的列表如数组时非常方便地从0数到列表的长度。 let names [Anna, Alex, Brian, Jack]
let count names.count
for i in 0..count {
print(第 \(i 1) 个人叫 \(names[i]))
}
// 第 1 个人叫 Anna
// 第 2 个人叫 Alex
// 第 3 个人叫 Brian
// 第 4 个人叫 Jack 数组有 4 个元素但 0..count 只数到3最后一个元素的下标因为它是半开区间。 单侧区间 闭区间操作符有另一个表达形式可以表达往一侧无限延伸的区间 —— 例如一个包含了数组从索引 2 到结尾的所有值的区间。在这些情况下你可以省略掉区间操作符一侧的值。这种区间叫做单侧区间因为操作符只有一侧有值。例如 for name in names[2...] {
print(name)
}
// Brian
// Jackfor name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian 半开区间操作符也有单侧表达形式附带上它的最终值。就像你使用区间去包含一个值最终值并不会落在区间内。例如 for name in names[..2] {
print(name)
}
// Anna
// Alex 转载于:https://www.cnblogs.com/starcrm/p/9961905.html