swift笔记(二) —— 运算符

基本运算符

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来开玩笑写easy混淆代码的人。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

我认为这里又是个坑....好不easy把 = 和 ==的问题给干掉了,又来了个..和... 这两个的问题根源有差别吗?!

逻辑运算符

与(&&)

或(||)

非(!)   //神经是不是有问题!!!! 在一个语言中。同一个符号在不同位置有两种意思!!! 究竟是几个意思!!! 看着吧,这里又是2B面试官发挥淫相的时机了

早晚会有人会写出类似这种代码:

let allowedEntry:Bool?

= false

if !allowedEntry! {…}  // 前后都有叹号。究竟是几个意思!!!!再次吐槽一下

至于不给 a && b || c || d && e 加括号表示优先级的人。再次强烈建议开除

时间: 2024-08-28 16:34:33

swift笔记(二) —— 运算符的相关文章

swift 笔记 (二十) —— 泛型

泛型 泛型是为了解决在针对不同数据类型,而做了同一种功能的操作导致的每个类型我们都要写一份代码的问题. 有了泛型,我们可以只写一份逻辑代码,而适应于不同的数据类型. func swapInt(inout num1:Int, inout num2: Int) { var tmp = num1 num1 = num2 num2 = tmp } func swapDouble(inout num1: Double, inout num2:Double) { var tmp = num1 num1 =

swift 笔记 (二十一) —— 高级运算符

高级运算符 位运算符 按位取反: ~ 按位与运算:  & 按位或运算:  | 按位异或运算:  ^ 按位左移运算: << 按位右移动算: >> 溢出运算符 自从swift里面提供了所谓的类型安全之后.我们就不能再用一个 Int.max 进行+1操作了,这样会导致报错.所以swift又提供了一个让我们在知道这会溢出的前提下,继续+1的溢出运算符,这听上去也不错. 溢出加法 &+ 溢出减法 &- 溢出乘法 &* 溢出除法 &/ 溢出取余 &

swift笔记二 playground

New a playgroud放在桌面. Name: foo Platform: OS X 在桌面会生成一个叫foo.playground的文件, View > Assistant Editor > show assistant editor(on bottom)可以上你方便的看到出错信息. 双击foo.playground可以直接打开,,右击show package contents可以将playground中对应的***.swift文件拷贝出来..

JAVA学习笔记(二) - 运算符

变量与常量 变量的声明和赋值 /* * 变量的声明和赋值 */ public class Test { public static void main(String[] args) { // 1-可以声明的同时,对变量赋值:int x = 10; //局部变量,变量名符合命名规则. //推荐使用此种方式. int x = 10; // 2-可以先声明,再赋值:int x; x = 10; int y;//变量的声明 y = 20;//将20赋值给y指向的内存空间 // 3-可以一行声明多个变量:

【Swift】学习笔记(二)——基本运算符

运算符是编程中用得最多的,其包括一元,二元和三元 三种运算符.swift也和其它编程语言一样基本就那些,下面总结一下,也有它特有的运算符,比如区间运算符 1.一元运算符 =   赋值运算符,用得最多的啦,其不带任何返回值 +  加法(数字相加,也可用于字符拼接var ss = "a"+"b") -   减法 *   乘法 /   除法 % 求余(负号忽略,浮点数也可以求余) >  大于 <  小于 2.二元运算符 ++  自增(就是i = i + i的缩

初学swift笔记运算符(二)

swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println(char) var str:String str="abcceadfasdfl;jk\0dfaaaa 0001496" println(str) //查看长度 countElements 返回的元素个数 println(countElements(str)) var str1="

Swift学习笔记(二)参数类型

关于参数类型,在以前的编程过程中,很多时间都忽视了形参与实参的区别.通过这两天的学习,算是捡回了漏掉的知识. 在swift中,参数有形参和实参之分,形参即只能在函数内部调用的参数,默认是不能修改的,如果想要修改就需要在参数前添加var声明. 但这样的声明过后,仍旧不会改变实参的值,这样就要用到inout了,传递给inout的参数类型必须是var类型的,不能是let类型或者字面类型,(字面类型是在swift中常提的一个术语,个人认为就是赋值语句,也不能修改)而且在传递过程中,要用传值符号"&

swift 笔记 (十二) —— 下标

下标 swift允许我们为 类,结构体,枚举 定义下标,以更便捷的方式访问一大堆属性.比如Array和Dictionary都是结构体,swift的工程师已经为这两个类型提供好了下标操作的代码,所以,我们才可以通过 myArray[2]这种方式,读取和改写这个struct中保存的数据.而且,一个类型中可以定义多种下标访问方式(重载,关于重载,在后面的笔记中会提到,这里先不用太在意) 下标可以定义为"读写"型的,也可以定义为"只读"型,这种行为,是通过定义一组操作完成的

iOS9-by-Tutorials-学习笔记二:App-Search

iOS9-by-Tutorials-学习笔记二:App-Search 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyue.com 本文为自己读书的一个总结,可能与原书有一定出入 iOS 9推出了搜索技术,能够让用户在Spotlight中搜索到APP内部的内容.苹果提供了三个APP Search API: * NSUserActivity * Core Spotlight *