Swift4基本运算

只列出与Swift和C语言不一样用法或者一些在C中不常见的用法

元组赋值
let (x,y) = (1,2)

不同于C和Objective-C在,Swift中,赋值操作不返回一个值,所以以下操作是不允许的

if x=y {  //错误,x=y不返回值.(注意赋值操作是`=`,判等操作是`==`)
}

溢出

和C,Objective-C不同,Swift默认不允许溢出操作,如果需要溢出,使用溢出操作符

a &+b

字符串相加

在Swift中,支持字符创相加

"hello, "+"world"

元组比较

你同样可以比较拥有同样数量值的元组,只要元组中的每个值都是可比较的。比如说, IntString 都可以用来比较大小,也就是说 (Int,String) 类型的元组就可以比较。一般来说, Bool 不能比较,这意味着包含布尔值的元组不能用来比较大小。

元组以从左到右的顺序比较大小,一次一个值,直到找到两个不相等的值为止。如果所有的值都是相等的,那么就认为元组本身是相等的。比如说:


(1, "zebra") < (2, "apple")   // true  ,因为1<2
(3, "apple") < (3, "bird")    // true  因为3等于2并且"apple" 小于 "bird"
(4, "dog") == (4, "dog")      // true 因为4和4相等,dog和dog相等

从第一个例子看出,如果元组前面的值已经决出大小了,就不用进行后面的比较了.

合并空值操作符(??操作符)


a ?? b

如果可选项a是有值的,则展开,如果a是没有值的,使用b的值.

相当于以下操作


a! = nil ? a!:b

用例


let defualtColorName="red"

var userDefinedColorName:String? 



var colorNameToUse = userDefinedColorName ?? defualtColorName

区间运算符

  • ...:闭区间
for index in 1...5 {
    print("\(index) times 5 is \(index*5)")
}

/ 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25

  • ..<或者..>:开区间
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack

其他

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基本运算符 1.与 Objective-C 和 C 不同,Swift 的赋值符号自身不会返回值。下面的语句是不合法...
    wingsrao阅读 350评论 0 0
  • 关于 Swift 重要这个文档所包含的准备信息, 是关于开发的 API 和技术的。这个信息可能会改变, 根据这个文...
    无沣阅读 4,455评论 1 27
  • 运算符是检查、改变、合并值的特殊符号或短语。例如,加号(+)将两个数相加(如 let i = 1 + 2)。 Sw...
    伍哥___阅读 496评论 0 0
  • 2018年最后一次水逆开始了,还有几天又是我的射手月,还剩半个月,我就25了。 25周岁,我总觉得自己要说些什么。...
    花痴小姐爱撸猫阅读 656评论 0 4
  • 你渴望一滴水 我给你一片明亮的湖 你渴望一朵花 我给你整个灿烂的春天 你的渴望,就是我的梦想 你的明天,就是我的向...
    上官飞鸿阅读 804评论 16 33