swift笔记(二) —— 运算符
来源:互联网 发布:汽修软件 编辑:程序博客网 时间:2024/06/06 08:42
基本运算符
Swift支持大部分的标准C语言的操作符,并且做了一些改进,以帮助开发者少犯低级错误,比如:
本该使用==的时候,少写了个=, if x == y {…} 写成了 if x = y {…} 你就悲剧了
在使用 +,-,*,/ 的时候,得到的结果溢出了,你还是悲剧了,要做很多检查保证不溢出才行
然而,在Swift中,我们再也不用担心这些问题了,编译器会帮我们搞定的
Swift还提供了两个C语言中没有的二元操作符 .. 和 …
接下来,我们就来看看Swift中的用法
术语(原文中专门列出来) 什么是一元运算符,二元运算符,三目运行符,这里我就不列了。
赋值运算符 (=)(感谢 swift技术交流第一平台(355277)的群友 夕颜(1651150754) 指出错别字 )
var a = 5
let b = 10
a = b //不解释
重点出现,元组赋值:
let (x, y) = (1, 2) //x = 1, y = 2 是一样一样的
但是如果把=写在if 里,在Swift中是通不过编译的,以后再也不用担心错把== 写成 =了
if x = y {…} //这里编译器会提示:Type ‘()’ does not conform to protocol ‘LogicValue’
也就是说编译器并不认为赋值操作符是个Bool表达式
算术运算符(感谢 swift技术交流第一平台(355277)的群友 夕颜(1651150754) 指出错别字 )
1 + 2
5 - 3
2 * 3
10.0 / 2.5
这些写法和C无异,但是,Swift编译器会检查运算结果是否会溢出, 比如:
var myUInt:UInt = 1
myUInt = myUInt - 2 //编译器会提示: Arithmetic operation ‘1-2’(on type’UInt’) results in an overflow
但有些特殊时候,我们需要它溢出的时候怎么办呢?
Swift提供了,可以溢出的运算符: &- 这个先不细说,在最后的章节里,有讲溢出规则的时候再说吧
运算符+同时也支持字符串的连接,如:
“hello, “ + “kitty” //等同于 “hello, kitty"
求余数运算符(%)
9 % 4 的结果是1 //有些语言里求余数运算,用的是mod
这里需要注意的是 如果是负数运算,比如
9 % -4 的结果依然是1,想要得到正确的结果,非得写成:
-9 % 4 不可
当然,-9 % -4 与 -9 % 4的结果是一样的,运行符后面的符号是被忽略的
另外,在Swift中,浮点数也可以使用 % 来做求余数运算了,这是C和Objective-C里是不可以的
8 % 2.5 //得到结果0.5
自增与自减运算符
跟C语言中的一样,好吧,又会涌现出一大批脑残面试官要用 a++和 ++a来折腾人了
反正在项目中,要是敢拿a++和 ++a来开玩笑写容易混淆代码的人,2话不说,直接开除就对了
(连代码是给人读的,不是给机器读的的道理都不明白,还写什么代码)
一元运算符
没啥可以说的…幼儿园小朋友都知道在 3前面加一个减号,他就是-3了...
复合运算符
又是和C里面一样
var a = 1
a += 2 //a的值是3
比较运算符(返回Bool型)
判断等于 ==
判断不等于 !=
判断大于 >
判断小于 <
判断大于等于 >=
判断小于等于 <=
这些运算符不仅可以用于数值,也可以用于字符串的判断
除此之外,Swift还提供了两个新的比较运算符 === 和 !=== 用于判断两个引用是否指向了同一个对象,这个到类和结构体的章节会有例子
三目运算符( ? : )
与C语言一样
question ? answer1 : answer2
等效于
if question {
answer1
} else {
answer2
}
范围运行符(这样译我觉得不合适,更应该叫自动扩展)
.. 与 ...的区别
用数学的方法描述就是:
a..b 等效于 [a, b) //不含b
a…b 等效于 [a, b] //含b
我觉得这里又是个坑....好不容易把 = 和 ==的问题给干掉了,又来了个..和... 这两个的问题根源有区别吗?!
逻辑运算符
与(&&)
或(||)
非(!) //神经是不是有问题!!!! 在一个语言中,同一个符号在不同位置有两种意思!!! 到底是几个意思!!! 看着吧,这里又是2B面试官发挥淫相的时机了
早晚会有人会写出类似这样的代码:
let allowedEntry:Bool? = false
if !allowedEntry! {…} // 前后都有叹号,到底是几个意思!!!!再次吐槽一下
至于不给 a && b || c || d && e 加括号表示优先级的人,再次强烈建议开除
0 0
- swift笔记(二) —— 运算符
- swift 笔记 (二十一) —— 高级运算符
- 【Swift】学习笔记(二)——基本运算符
- The Swift Programming Language学习笔记(二十六)——高级运算符
- Swift学习笔记(二)之基本运算符
- Swift学习笔记——基础运算符
- Swift学习笔记(4)——基本运算符
- 基本运算符—Swift学习笔记(五)
- Swift 基本运算符(二)
- swift笔记-赋值运算符
- Swift 基本运算符(笔记)
- Swift笔记:基本运算符
- swift 笔记 (二十) —— 泛型
- iOS开发——swift篇&经典语法(二十)高级运算符
- Swift 高级运算符(二十)
- 二 Swift学习之基本运算符
- Swift学习-运算符(二)
- swift基础教程——基本运算符
- 根据ECore元模型创建模型
- Visual C++串口通信技术详解 调试精灵
- ssssssssssss
- Android一些学习资源
- ubuntu 14.04使用xrdp实现windows 远程桌面连接
- swift笔记(二) —— 运算符
- CWnd指针和HWnd
- IOS工程依赖解耦之静态链接库
- swift笔记 (三) —— 字符和字符串
- iis如何下载包含中文文件名的rar文件
- 《算法设计与分析》考试说明(复习总结 与 试题提交方式、个人考勤记录——2014.05.10更新)
- Linux Shell脚本查看Java线程的CPU使用情况
- Python多线程下载文件实例代码
- C++输出wchar_t和wstring