美文网首页
Swift基本运算符_2

Swift基本运算符_2

作者: edison0428 | 来源:发表于2017-11-08 13:50 被阅读17次

    术语

    运算符分为一元,二元,三元运算符

    • 一元运算符对单一操作对象进行操作(如-a),一元运算符又分前置前置运算符和后置运算符,前置运算符紧跟操作对象之前(如!b),后置运算符紧跟操作运算符之后(如c!)
    • 二元运算符操作两个对象(如2+3),是中置的,放在两个操作对象中间
    • 三元运算符,和c语言一样,swift只有一种三元运算符,就是三目运算符(a?b:c)

    受运算符影响的较操作数,在表达式1+2中,+就是运算符,12就是操作数

    赋值运算符

    赋值运算符a=b,表示用b的值来初始化或者更新a
    a=b不返回任何值

    算术运算符

    swift中所有的数值类型都支持来基本的四则算术运算符

    • 加法(+)
    • 减法(-)
    • 乘法(*)
    • 除法(/)

    加法运算符可以拼接字符串

    var addStr = "i am" + "Edison"
    

    求余运算符

    求余运算符(a%b)是计算 b的多少倍刚好可以容下a,返回多出来的那部分(余数)

    注意:
    求余运算符(%)在其他语言也叫取模运算符。但是严格说来,我们看该运算符对负数的操作结果,「求余」比「取模」更合适些

    9 % 4    // 等于 1
    

    为了得到a % b的结果,% 计算了以下等式,并输出余数作为结果:

    a = (b × 倍数) + 余数
    

    在对负数 b 求余时,b 的符号会被忽略。这意味着 a % ba % -b 的结果是相同的

    组合赋值运算符

    跟c语言一样,Swift 也提供把其他运算符和赋值运算(=)组合的组合赋值运算符,组合加运算(+=)(-=) 等等

    复合赋值运算没有返回值,所以let b = a+=5是错误的

    比较运算符

    原标准的c语言中的比较运算符都可以在swift中使用

    • 等于 ==
    • 不等于 !=
    • 大于 >
    • 小于 <
    • 大于等于 >=
    • 小于等于 <=

    每个比较运算都返回了一个标识表达式是否成立的布尔值

    比较运算多用于条件语句,如if条件

    空合运算符

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

    空合运算符是对一下代码的简短表达方式

    a  !=  nil ? a! : b
    

    上述代码使用了三目运算符。当可选类型a的值不为空时,进行强制解封(a!),访问 a 中的值;反之返回默认值 b。无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性

    区间运算符

    闭区间运算符

    闭区间运算符(a...b) 定义了一个包含 从ab(包括ab)的所有值的区间,a的值不能超过b的值,闭区间运算符在迭代一个区间的所有值时是非常有用的,如在 for-in 循环中:

    for index in 1...6 {
        
        print(index)
    }
    

    上面的例子中,index 是一个每次循环遍历开始时被自动赋值的常量。这种情况下,index在使用前不需要声明,只需要将它包含在循环的声明中,就可以对其进行隐式声明,而无需使用let 关键字声明。

    如果你不需要区间序列内每一项的值,你可以使用下划线(_)替代变量名来忽略这个值:

    let base = 3
    let power = 10
    var answer = 1
    for _ in 1...power {
        answer *= base
    }
    print("\(base) to the power of \(power) is \(answer)")
    // 输出 "3 to the power of 10 is 59049"
    
    半开区间运算符

    半开区间运算符(a..<b)定义一个从ab但不包括b�的区间
    之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。
    半开区间的实用性在于当你使用一个从 0 开始的列表(如数组)时,非常方便地从0数到列表的长度

    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
    

    单侧区间

    闭区间操作符有另一个表达形式,可以表达往一侧无限延伸的区间 —— 例如,一个包含了数组从索引 2 到结尾的所有值的区间。在这些情况下,你可以省略掉区间操作符一侧的值。这种区间叫做单侧区间,因为操作符只有一侧有值

    let names = ["Anna", "Alex", "Brian", "Jack","Fucy","Nacy","Lugy"]
    let count = names.count
    for j in [...4] {
    
        print(names[j])
    }
    /*
    ["Anna", "Alex", "Brian", "Jack", "Fucy"]
    */
    
    let names = ["Anna", "Alex", "Brian", "Jack","Fucy","Nacy","Lugy"]
    let count = names.count
    for j in [1...] {
    
        print(names[j])
    }
    /*
    ["Alex", "Brian", "Jack", "Fucy", "Nacy", "Lugy"]
    */
    
    

    半开区间操作符也有单侧表示形式
    [..<2] [..<2]

    逻辑运算符

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

    相关文章

      网友评论

          本文标题:Swift基本运算符_2

          本文链接:https://www.haomeiwen.com/subject/etdemxtx.html