swift篇 基础知识4--基本运算符

赋值运算符(a = b)

如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量:

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

与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。所以下面语句是无效的:

if x = y {
    // 此句错误,因为 x = y 并不返回任何值
}

 算术运算符

  • 加法(+
  • 减法(-
  • 乘法(*
  • 除法(/
  • 求余(%)
1 + 2       // 等于 3
5 - 3       // 等于 2
2 * 3       // 等于 6
10.0 / 2.5  // 等于 4.0
-9 % 4      // 等于 -1

加法运算符也可用于 String 的拼接:

"hello, " + "world"  // 等于 "hello, world"

 

一元负号运算符、一元正号运算符

一元负号符(-)写在操作数之前,中间没有空格

let three = 3
let minusThree = -three       // minusThree 等于 -3
let plusThree = -minusThree   // plusThree 等于 3, 或 "负负3"

一元正号符+)不做任何改变地返回操作数的值:

let minusSix = -6
let alsoMinusSix = +minusSix  // alsoMinusSix 等于 -6

三元运算符

形式是 问题 ? 答案 1 : 答案 2

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight 现在是 90

空合运算符

空合运算符a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解包,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。

空合运算符是对以下代码的简短表达方法:

a != nil ? a! : b

 例子:

let defaultColorName = "red"
var userDefinedColorName: String?   //默认值为 nil

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName 的值为空,所以 colorNameToUse 的值为 "red"

区间运算符(Range Operators)

 闭区间运算符

闭区间运算符a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b

半开区间运算符

半开区间运算符a..<b)定义一个从 a 到 b 但不包括 b 的区间。

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

单侧区间

 闭区间操作符有另一个表达形式,可以表达往一侧无限延伸的区间

for name in names[2...] {
    print(name)
}
// Brian
// Jack

for name in names[...2] {
    print(name)
}
// Anna
// Alex
// Brian

半开区间操作符也有单侧表达形式,附带上它的最终值。就像你使用区间去包含一个值,最终值并不会落在区间内。例如:

for name in names[..<2] {
    print(name)
}
// Anna
// Alex

单侧区间不止可以在下标里使用,也可以在别的情境下使用。你不能遍历省略了初始值的单侧区间,因为遍历的开端并不明显。你可以遍历一个省略最终值的单侧区间;然而,由于这种区间无限延伸的特性,请保证你在循环里有一个结束循环的分支。你也可以查看一个单侧区间是否包含某个特定的值,就像下面展示的那样。

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true

逻辑运算符(Logical Operators)

逻辑运算符的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。

  • 逻辑非(!a
  • 逻辑与(a && b
  • 逻辑或(a || b

 

中缀运算符等级从高到低排列

中缀运算符按优先级从高到低的顺序排列在下面。如果在不指定优先级组的情况下声明新运算符,则它是优先级组的成员。没有关联性,并且优先级高于。DefaultPrecedenceDefaultPrecedenceTernaryPrecedence

操作员

描述

关联性

优先组

<<

按位左移

没有

BitwiseShiftPrecedence

>>

按位右移

没有

BitwiseShiftPrecedence

*

左联想

MultiplicationPrecedence

/

划分

左联想

MultiplicationPrecedence

%

左联想

MultiplicationPrecedence

&*

相乘,忽略溢出

左联想

MultiplicationPrecedence

&

按位与

左联想

MultiplicationPrecedence

+

左联想

AdditionPrecedence

-

减去

左联想

AdditionPrecedence

&+

加溢

左联想

AdditionPrecedence

&-

减去溢出

左联想

AdditionPrecedence

|

按位或

左联想

AdditionPrecedence

^

按位异或

左联想

AdditionPrecedence

..<

半开范围

没有

RangeFormationPrecedence

...

封闭范围

没有

RangeFormationPrecedence

is

类型检查

左联想

CastingPrecedence

asas?as!

类型转换

左联想

CastingPrecedence

??

无合并

右联想

NilCoalescingPrecedence

<

少于

没有

ComparisonPrecedence

<=

小于或等于

没有

ComparisonPrecedence

>

比...更棒

没有

ComparisonPrecedence

>=

大于或等于

没有

ComparisonPrecedence

==

等于

没有

ComparisonPrecedence

!=

不相等

没有

ComparisonPrecedence

===

相同

没有

ComparisonPrecedence

!==

不一样

没有

ComparisonPrecedence

〜=

模式匹配

没有

ComparisonPrecedence

.==

逐点相等

没有

ComparisonPrecedence

.!=

逐点不相等

没有

ComparisonPrecedence

.<

逐点小于

没有

ComparisonPrecedence

.<=

按点小于或等于

没有

ComparisonPrecedence

.>

逐点大于

没有

ComparisonPrecedence

.>=

逐点大于或等于

没有

ComparisonPrecedence

&&

逻辑与

左联想

LogicalConjunctionPrecedence

||

逻辑或

左联想

LogicalDisjunctionPrecedence

?:

三元条件

右联想

TernaryPrecedence

=

分配

右联想

AssignmentPrecedence

*=

乘和分配

右联想

AssignmentPrecedence

/=

划分和分配

右联想

AssignmentPrecedence

%=

剩余并分配

右联想

AssignmentPrecedence

+=

添加并分配

右联想

AssignmentPrecedence

-=

减去并分配

右联想

AssignmentPrecedence

<<=

左移并分配

右联想

AssignmentPrecedence

>>=

右移和分配

右联想

AssignmentPrecedence

&=

按位与并分配

右联想

AssignmentPrecedence

|=

按位或并分配

右联想

AssignmentPrecedence

^=

按位异或并分配

右联想

AssignmentPrecedence

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值