Swift基本运算符和OC相对,变化和增加的内容

Swift中大部分的运算符和OC都是共用的,只是部分符号做了优化,并增加了部分符号,如??空合运算符、区间运算符a..<b等,,以下为优化内容:

=

  1. 与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。所以下面语句是无效的:
if x = y {
    // 此句错误,因为 x = y 并不返回任何值
}

避免了常见的== 写成 = 的错误

  1. 多元组的赋值

有点像是ES6中的解构赋值,ES6中是这样的:[a, b] = [10, 20];

而在Swift中是这样的

let (x, y) = (1, 2)
// 现在 x 等于 1,y 等于 2

+

  1. Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 a &+ b)。
  2. Swift支持了喜闻乐见的字符串拼接功能 "hello, " + "world" // 等于 "hello, world"

??

在ES6中,提供了如下语法糖,如果对象是undefined,则使用其他默认值

let string = a || 'string value'

而swift也参考了这种做法,不过符号变成了两个问号??

let a = string ?? "string value"

//等价于
if string == nil , a = string else a = "string value"

区间运算符

(a…b) 定义了 >=a && <=b 的区间
(a…<b) 定义了 >=a && <b 的区间

这里奇怪的是,无法定义 >a && <= b的区间,比如使用(a<…b) 或者(a<.<b) 也许是我想多了 。。。

for index in 1...5 {
    print("\(index)")  //1.2.3.4.5
}
for index in 1..<5 {
    print("\(index)")  //1.2.3.4
}

单侧区间也比较好理解,[a…] 定义了>=a的区间,[…a] 定义了<=a的区间

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[2...] {
    print(name)
}
// Brian
// Jack

如果没有规定范围,则起反馈就是知道maxFloat的,比如

let range = ...5

range.contains(-1123123123123123123)  // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值