Swift编程the swift programming language 5swift

第2章:基本操作符

2019-01-31  本文已影响0人  行知路

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

一、赋值运算符

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

 // 此处赋值号右侧的是一个元组,把这个元组的值赋值为x、y
let ( x , y ) = ( 1 , 2 )

// 此处无法通过编译 
//  if x = y在C中这个语句是合法的,但是由于其容易误用且难以发现此类误用
// 在swift中取消了赋值运算符返回值的能力
 if x = y {

}

二、算术运算符

 "hello, " + "world"  // 结果是 "hello, world"

三、取模运算符

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

五、关系运算符

  支持标准的关系运算符

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

// 此时支持短路计算,即逻辑运算符中的短路运算
( 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中的完全相同

上一篇下一篇

猜你喜欢

热点阅读