Welcome to Swift (苹果官方Swift文档初译与注解十五)---94~100页(第二章)

Assignment Operator (赋值操作符)

  赋值操作符可以使用一个值b初始化或者改变另一个值a.

    let b = 10

    var a = 5

    a = b

    // a is now equal to 10

  如果赋值操作符右边是包含多个值的元组,那么它的元素会依次赋值给多个常量或者变量:

    let (x, y) = (1, 2)

    // x is equal to 1, and y is equal to 2

  与C和OC中不同的是,在Swift中赋值操作符没有返回值,例如下面的代码样例是错误的:

    if x = y {

        // this is not valid, because x = y does not return a value

    }

  赋值操作符本身没有返回值可以有效的防止赋值操作(=)偶尔被用成相等操作(==).

Arithmetic Operators (数学操作符)

  针对所有的数字类型,Swift提供了四种基本的数学操作符:

    •   Addition (+)    加
    •   Subtraction (-)  减
    •   Multiplication (*) 乘
    •   Division (/)   除

    1 + 2       // equals 3

    5 - 3       // equals 2

    2 * 3       // equals 6

    10.0 / 2.5  // equals 4.0

  不同于C和OC的数学操作符,在Swift中,数学操作符默认是不允许数值溢出(超出数值储存范围).如果需要进行数值溢出,可以使用溢出操作符(例如:a &+ b)

  加法操作符支持字符串(String)的连接:

    “hello, " + "world"  // equals "hello, world”

  两个字符,或者一个字符与一个字符串,都可以相加后得到一个新的字符串(String):

    let dog: Character = "🐶"

    let cow: Character = "🐮"

    let dogCow = dog + cow

    // dogCow is equal to "🐶🐮”

Remainder Operator (取余操作符)

  取余操作 (a % b)计算出a整除b之后,余数的值.

  注意点:

  取余操作在其他语言中,也被称为取模操作.负数也可以进行取余操作.

  下面介绍取余操作是怎样工作的,为了计算 9%4 ,第一步是算出在9里面包含多少个4:

  pastedGraphic.pdf

  可以看出,9里面包含了两个4,并且剩余的数值是1 (上图橙色里的部分).

  在Swift中,这样的操作写为:

    9 % 4    // equals 1

  为了计算 a%b的结果,取模操作符%进行下面的方程式运算,并返回余数(remainder):

    a = (b × some multiplier) + remainder

  some multiplier是b能够使用的最大乘数.

  把9和4放到这个方程式中:

    9 = (4 × 2) + 1

  对负数进行取余操作也是同样的方法:

    -9 % 4   // equals -1

  把-9和4代入到方程式中:

    -9 = (4 × -2) + -1

  得到余数值是-1.

  取余操作符后面的数值符号会被忽略的.这就是说a%b与a%-b是相同的.

Floating-Point Remainder Calculations (浮点类型取余运算)

  与C和OC不同,Swift的取余操作也可以处理浮点类型的值:

    8 % 2.5   // equals 0.5

  这个例子里,8除以2.5等于3,余0.5,因此取余操作返回一个Double类型的值0.5.

  pastedGraphic_1.pdf

Increment and Decrement Operators (自增和自减操作符)

  与C语言一样,当给一个数字变量增1或者减1的时候,Swift也提供这种操作的缩写方式:自增操作符(++)和自减操作符(--),它们对任意整数类型变量和浮点类型变量都有效.

    var i = 0

    ++i      // i now equals 1

  每次调用++i,i的值都增加1.++i是i = i + 1的缩写.同样,--i是i = i -1的缩写.

  操作符++和--可以用成前缀或者后缀.++i 和i++都是给i值增1的合法方式.同样的,--i和i--也是给i值减1的合法方式.

  注意++和--操作符修改i值后,也会返回一个值.如果你只关注自增或自减后的i值,那么可以忽略操作符的返回值.但是如果你需要使用这个返回值,那么前缀操作和后缀操作结果是不同  的.参考如下规则:

    •   如果自增或自减操作符是在变量之前,那么先对变量进行自增或自减运算,然后返回变量的值;
    •   如果自增或自减操作符在变量之后,那么先返回变量的值,然后再进行变量的自增或自减操作.

  代码样例:

    var a = 0

    let b = ++a

    // a and b are now both equal to 1

    let c = a++

    // a is now equal to 2, but c has been set to the pre-increment value of 1

  在上面的例子中, let b = ++a 会先使a增加1,然后返回a增值后的结果.这就是为什么a和b的值都等于一个新值1.

  然而, let c = a++ 会先返回a的值,然后a进行增1操作.这就意味着,c得到的是a的旧值1,而a已经自增后等于2了.

  除非你明确需要使用i++,否则我们建议无论什么情况,推荐使用++i和--i.因为它们都有明显的符合预期的意图:修改i,然后返回修改后的结果.

 

posted @ 2014-06-21 10:31  老蔡居士  阅读(497)  评论(0编辑  收藏  举报