Swift 基本运算符(二)

前端之家收集整理的这篇文章主要介绍了Swift 基本运算符(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本运算符

1.Terminology 术语

运算符有一目,双目和三目运算符
一目运算符对一个对象进行操作,如-a,区分前置符和后置符, 如!b,i++
双目运算符用于两个对象之间的操作,如 2+3
三目运算符操作与三个对象之间,Swift只有一个三目运算符 a?b:c

2.Assignment Operator 赋值运算符

  1. letb=10
  2. vara=5
  3. a=b
  4. //aisnowequalto10
  5. //如果右边是个元组,定义的元素被分解为多个变量或常量
  6. let(x,y)=(1,2)
  7. //xisequalto1,andyisequalto2
  8. //Swift的赋值操作不返回任何值,ifx=y是错误代码,让你不会再把==错写为=,Swift帮你避免了这种代码错误
  9. ifx=y{
  10. //thisisnotvalid,becausex=ydoesnotreturnavalue
  11. }

3.Arithmetic Operators 数值运算

Swift不允许数值运算中出现溢出,不过可以使用溢出运算符,比如(a &+ b)

  1. 1+2//equals3
  2. 5-3//equals2
  3. 22*3//equals6
  4. 10.0/2.5//equals4.0
  5. //加法也用于字符串的拼接,两个Character或一个String一个Character的拼接
  6. "hello,"+"world"//equals"hello,world"

4.Remainder Operator 求余

求余运算在其他语言也有,其实是一样的,原文讲的很详细,在对负数b求余,b的符号被忽略,即 a%b 和 a%-b 的结果是一样的
    9%4//equals1
  1. -9%4//equals-1

5.Floating-Point Remainder Calculations 浮点数求余

Swfit可以对浮点数进行求余计算,这是不同与其他语言的一个特点
    8%2.5//equals0.5

@L_301_11@

    vari=0
  1. ++i//inowequals1
当++前置的时候,先自增再返回
当++后置的时候,先返回再自增
    vara=0
  1. letb=++a
  2. //aandbarenowbothequalto1
  3. letc=a++
  4. //aisnowequalto2,butchasbeensettothepre-incrementvalueof1

7.Unary Minus Operator/ Unary Plus Operator 负号和正号

    letthree=3
  1. letminusThree=-three//minusThreeequals-3
  2. letplusThree=-minusThree//plusThreeequals3,or"minusminusthree"
  3. letminusSix=-6
  4. letalsoMinusSix=+minusSix//alsoMinusSixequals-6

8.Compound Assignment Operators 复合赋值

加赋运算( += ),复合赋值没有返回值,let b = a += 2 写法是错误的
    vara=1
  1. a+=2//aisnowequalto3

9.Comparison Operators 比较

    1==1//true,because1isequalto1
  1. 2!=1
  2. 2>1
  3. 1<2
  4. 1>=1
  5. 2<=1//false,because2isnotlessthanorequalto1
  6. letname="world"
  7. ifname=="world"{
  8. println("hello,world")
  9. }else{
  10. println("I'msorry\(name),butIdon'trecognizeyou")
  11. }
  12. //prints"hello,world",becausenameisindeedequalto"world"

10.Ternary Conditional Operator 三元条件运算

三元条件运算是有三个操作数得运算符,question ? answer1 : answer2 ,如果question成立,返回answer1,否则返回answer2
    letcontentHeight=40
  1. lethasHeader=true
  2. letrowHeight=contentHeight+(hasHeader?50:20)
  3. //rowHeightisequalto90

11.Range Operators 区间运算

闭区间(a...b),定义了从a到b(包括a和b)区间内的所有值
    forindexin1...5{
  1. println("\(index)times5is\(index*5)")
  2. }
  3. //1times5is5
  4. //2times5is10
  5. //3times5is15
  6. //4times5is20
  7. //5times5is25

半闭区间(a..b),定义从a到b但不包括b的所有值,实用性在于当使用一个从0开始的数组,取数组的值
    letnames=["Anna","Alex","Brian","Jack"]
  1. letcount=names.count
  2. foriin0..count{
  3. println("Person\(i+1)iscalled\(names[i])")
  4. //Person1iscalledAnna
  5. //Person2iscalledAlex
  6. //Person3iscalledBrian
  7. //Person4iscalledJack

12.Logical Operators 逻辑运算

逻辑非 (!),对布尔值取反,前置操作符
    letallowedEntry=false
  1. if!allowedEntry{
  2. println("ACCESSDENIED")
  3. //prints"ACCESSDENIED"

逻辑与 (a&&b),只有a和b的值都为true,表达式的值才为true
    letenteredDoorCode=true
  1. letpassedRetinaScan=false
  2. ifenteredDoorCode&&passedRetinaScan{
  3. println("Welcome!")
  4. }else{
  5. println("ACCESSDENIED")
  6. //prints"ACCESSDENIED"

逻辑或 (a||b),a和b的值其中有一个为true,表达式就为true
    lethasDoorKey= letknowsOverridePassword=ifhasDoorKey||knowsOverridePassword{
  1. //prints"Welcome!"

组合
    ifenteredDoorCode&&passedRetinaScan||hasDoorKey||knowsOverridePassword{
  1. //prints"Welcome!"

使用括号来明确运算优先级
    if(enteredDoorCode&&passedRetinaScan)||hasDoorKey||knowsOverridePassword{
  1. //prints"Welcome!"

猜你在找的Swift相关文章