第2章:基本操作符

作者: 行知路 | 来源:发表于2019-01-31 15:27 被阅读0次

      swift提供了大多数的标准C运算符,并对某些运算符进行了改进同时增加了部分新的运算符。

    一、赋值运算符

      赋值运算符与C中的赋值运算符大部分一致,下述部分是不一致的地方。

     // 此处赋值号右侧的是一个元组,把这个元组的值赋值为x、y
    let ( x , y ) = ( 1 , 2 )
    
    // 此处无法通过编译 
    //  if x = y在C中这个语句是合法的,但是由于其容易误用且难以发现此类误用
    // 在swift中取消了赋值运算符返回值的能力
     if x = y {
    
    }
    

    二、算术运算符

    • swift的算数运算符在发现计算会溢出时,则会触发编译错误
    • String类型支持通过+号进行链接
     "hello, " + "world"  // 结果是 "hello, world"
    
    • swift也支持复合算数运算符(+=、-=、*=、/=)

    三、取模运算符

    9 % 4    // 结果是 1
    -9 % 4   // 结果是 -1,原理是-9 =( 4 × -2 )+ -1
    
    // a % b 或者 a % -b 所得结果总是相同,因此此时忽略b的正负
    

    四、一元减号运算符

    // 对给定的值取相反的符号
    let three = 3
    let minusThree = -three       // minusThree -3
    let plusThree = -minusThree   // plusThree 3
    

    五、关系运算符

      支持标准的关系运算符

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

      还支持基于元组的关系运算符

    // 此时支持短路计算,即逻辑运算符中的短路运算
    ( 1 , "zebra" ) < ( 2 , "apple" )   // true because 1 is less than 2; "zebra" and "apple" are not 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"
    

    六、三元运算符

      与C中的三元运算符相同。

     let contentHeight = 40
     let hasHeader = true
     let rowHeight : Int
     if hasHeader {
        rowHeight = contentHeight + 50
    } else {
        rowHeight = contentHeight + 20
    }
    
    // 以上写法与以下写法相同
    let contentHeight = 40
     let hasHeader = true
     let rowHeight = contentHeight + ( hasHeader ? 50 : 20 ) // 三元运算符 ?:
    

    七、nil合并运算符

    // ?? 就是nil合并运算符,示例如下
    let defaultColorName = "red"
    var userDefinedColorName : String ?   // userDefinedColorName 是 nil
    var colorNameToUse = userDefinedColorName ?? defaultColorName
    // userDefinedColorName 是 nil, 所以 colorNameToUse 被设置为 "red"
    

    八、范围运算符

    // ...是闭区间范围运算符
     for index in 1 ... 5 {
        print ( " \ ( index )" ) // 输出1、2、3、4、5
    }
    
    // ..<是左闭右开范围运算符
     for index in 1 ..< 5 {
        print ( " \ ( index )" ) // 输出1、2、3、4
    }
    
    // 以下是一些简写形式
    let names = [ "Anna" , "Alex" , "Brian" , "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
    
    // range是一个范围,从Int.min开始,一直到5
    let range = ...5
    range . contains ( -1 )   // true
    range . contains ( 0 )   // true
    range . contains ( 4 )   // true
    range . contains ( 7 )   // false
    
    

    八、逻辑运算符

      swift中的逻辑运算符与C中的完全相同

    相关文章

      网友评论

        本文标题:第2章:基本操作符

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