「Swift」笔记第二章 Basic Operators

2 第二章:基本操作符

  • 逻辑操作符:AND(&&)
  • 算术操作符(+,-,*,/等)会检测和拒绝数据溢出操作

2.1 术语

  • 操作符有一元的,二元的,三元的
    • 一元操作符对单一对象进行操作,有前缀一元操作符(-a)和后缀一元操作符(a!)
    • 二元操作符操作两个对象,夹在两个对象中间,是中缀操作符、
    • 三元操作符操作三个对象,在swift中只有唯一的一个:a?b:c

2.2 赋值操作符

  • =
    let a = 10
    var b = 5
    b = a
    
    let (x, y) = (1, 2)
    

2.3 算术操作符

算术操作符不允许数值溢出,溢出时会报错

  • +, -, *, /
  • 算术操作符+允许两个字符串(String)相加:
    "hello, " + "world"  // equals "hello, world"
    

2.3.1 余数运算符

  • %,进行取余操作,返回余数

2.3.2 一元减操作符

一元减操作符直接放在被操作对象的前方,有点神奇的操作:

let three = 3
let minusThree = -three       // minusThree equals -3
let plusThree = -minusThree   // plusThree equals 3, or "minus minus three"

2.3.3 一元加操作符

尽管一元加操作符不会做任何操作,但可以用来放在数据前,从视觉上表示是正数还是负数

let minusSix = -6
let alsoMinusSix = +minusSix  // alsoMinusSix equals -6

2.4 复合赋值操作符

var a = 1
a += 2
// a is now equal to 3

2.5 比较操作符

等于 (a == b)
不等于 (a != b)
大于 (a > b)
小于 (a < b)
大于等于 (a >= b)
小于等于 (a <= b)

  • 可以对元组进行比较,前提是元组的每个元素可以使用比较操作符,对应元素数据类型相同,元组长度相同;元组每个对应元素依次比较,直至元素比较分出大小;如果元素为字符串,则对字符串的每个字符依次比较,直至分出大小;字符比较a最小
    (1, "zebra") < (2, "apple")   // true because 1 is less than 2; "zebra" and "apple" aren't compared
    (3, "apple") < (3, "bird")    // true because 3 is equal to 3, and "apple" is less than "bird"
    (4, "dog") == (4, "dog")      // true because 4 is equal to 4, and "dog" is equal to "dog"
    

2.6 三元条件操作符

question ? answer1 : answer2
question应该是bool类型

if question {
     
	answer1
} else {
     
	answer2
}

2.7 Nil合并操作符

nil合并操作符为检查和解包提供了一种优雅的且易读的表达方式
下面的代码结合了三元操作符,如果a不等于nil,则对a进行解包
a ?? b = a != nil ? a! : b

使用例子如下:

let defaultColorName = "red"
var userDefinedColorName: String?   // defaults to nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

2.8 范围操作符

swift包含一些不同的范围操作符,闭合和半开的范围是有限的,而单边的范围是无限的

2.8.1 闭合范围操作符

  • a...b
    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
    

2.8.2 半开范围操作符

  • a..:a小于b但不等于b
    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
    

2.8.3 单边范围

  • a... 或者 ...b
    for name in names[2...] {
           
        print(name)
    }
    // Brian
    // Jack
    
    for name in names[...2] {
           
        print(name)
    }
    // Anna
    // Alex
    // Brian
    
  • 半开+单边:..<2
    for name in names[..<2] {
           
        print(name)
    }
    // Anna
    // Alex
    
  • 说明单边无限性的例子
    let range = ...5
    range.contains(7)   // false
    range.contains(4)   // true
    range.contains(-1)  // true
    

2.9 逻辑操作符

逻辑操作符是对bool型数据进行处理的操作符,包括三种操作:

  1. NOT( !a )
  2. AND(a && b)
  3. OR(a || b)

和python,C++中的与或非一样的用法,优先级1 > 2 > 3

你可能感兴趣的:(Swift,swift,ios)