美文网首页Swift
1.01表达式、变量和常量

1.01表达式、变量和常量

作者: Jimmy_L_Wang | 来源:发表于2019-06-13 00:15 被阅读0次

    计算机工作原理

    计算机的核心是一个中央处理器(CPU)。这本质上是一个数学机器。它对数字执行加法、减法和其他算术运算。当你操作你的电脑时,你所看到的一切都是建立在CPU每秒处理数百万次数字的基础上的。

    CPU将它所处理的数字存储在称为寄存器(register)的小内存单元中。CPU能够从计算机的主存储器(称为随机存取存储器(RAM))中将数字读入寄存器。它还能够将存储在寄存器中的数字写回RAM。这使得CPU能够处理大量的数据,而这些数据并不都适合存储在寄存器库中。

    cpu_register.png

    当CPU将数值从RAM中提取到寄存器中时,它将在其数学单元中使用这些值,并将结果存储在另一个寄存器中。

    每当CPU执行加法、减法、从RAM读取或向RAM写入操作时,它都在执行一条指令。每个计算机程序通常由成千上万条指令组成。一个复杂的计算机程序,比如您的操作系统macOS(是的,这也是一个计算机程序!),可能总共有数百万条指令。

    编写单独的指令来告诉计算机该做什么是完全可能的,但是对于除最简单的程序之外的所有程序,这将是非常耗时和乏味的。这是因为大多数计算机程序的目标远不止简单的数学——计算机程序可以让你上网、处理图像、和朋友聊天。

    您不是编写单独的指令,而是用特定的编程语言编写代码,例如使用Swift语言。代码通过一个叫做编译器的计算机程序,编译器把代码转换成CPU知道如何执行的指令。你写的每一行代码都会变成许多指令——有些行可能会变成几十条指令!

    代码注释Code comments

    单行注释

     // This is a comment. It is not executed.
    

    多行注释

     // This is also a comment.
     // Over multiple lines.
    
    /* This is also a comment.
       Over many..
       many...
       many lines. 
    */
    

    嵌套注释

    /* This is a comment.
     /* And inside it
     is
     another comment.
     */
     Back to the first.
     */
    

    算术运算Arithmetic operations

    简单运算

    • 加: +
    • 减: -
    • 乘:*
    • 除:/
    2 + 6
    10 - 2 
    2 * 4 
    24 / 3
    

    书写格式

    2+6   // OK
    2 + 6 // OK
    2 +6  // ERROR
    2+ 6  // ERROR
    

    取模运算

    整数类型取模

    28 % 10 //8
    

    浮点数类型取模

    (28.0).truncatingRemainder(dividingBy: 10.0) //8
    

    移位操作Shift operations

    左移shift left和右移操作shift right采用十进制数的二进制形式,并分别将数字向左或向右移动。然后返回新的二进制数的十进制形式。

    例如,二进制中填充为8位的十进制数字14是00001110。左移两位得到00111000,转换为十进制数是56。

    shift_operation.png
    • Shift left: <<
    • Shift right: >>
    1 << 3 //8 1乘以2的3次方
    32 >> 2 //8 32初一2的2次方
    

    使用移位的一个原因是使乘或除2的幂(2的几次方)变得容易。注意左移1等于乘以2,左移2等于乘以4,以此类推。同样地,右移1等于除以2,右移2等于除以4,以此类推。

    在过去,代码经常使用这种技巧,因为对CPU来说,移位比特(bits)要比复杂的乘法和除法运算简单得多。因此,如果使用移位,代码会更快。然而,现在的cpu要快得多,编译器甚至可以将乘方和除法转换为移位。因此,您将看到只有在进行二进制操作时才会发生移位,除非您成为一名嵌入式系统程序员,否则您可能不会看到这种情况!

    数学函数Math functions

    Swift还提供了大量的数学函数供您在必要时使用。你永远不知道什么时候你需要用到一些三角函数,尤其是当你是Swift的一名专业人员并编写那些复杂的游戏时!

    sin(45 * Double.pi / 180)
    // 0.7071067811865475
    cos(135 * Double.pi / 180)
    // -0.7071067811865475
    
    (2.0).squareRoot()  //2.0的平方根
    // 1.414213562373095
    
    (4.0).squareRoot()  //4.0的平方根
    //2.0
    
    max(5, 10)
    // 10
    min(-5, -10)
    // -10
    
    Double.pi / 2
    //1.570796326794897
    
    max((2.0).squareRoot(), Double.pi / 2)
    // 1.570796326794897
    

    命名数据Naming data

    最简单地说,计算机编程就是操作数据。记住,您在屏幕上看到的所有内容都可以简化为发送给CPU的数字。有时,您将这些数据表示为各种类型的数字,并对其进行处理,但其他时候,数据以更复杂的形式出现,比如文本、图像和集合。

    在你的Swift代码中,你可以给每一段数据起一个名字,以后你可以用来引用它。名称后面跟一个关联类型,该类型表示名称所引用的数据类型,例如文本、数字或日期。

    常量

    let number: Int = 10
    

    它声明一个名为number的常量,类型为Int,然后将该常量的值设置为10。

    let pi: Double = 3.14159
    let anotherDecimal: Float = 1.234
    

    事实上,Double的精度是Float的两倍,这就是为什么它一开始就被称为Double。浮点数占用的内存比双精度浮点数少,但通常,对数字的内存使用不是一个大问题,而且在大多数地方都使用双精度浮点数。

    变量

    当您知道需要更改某些数据时,应该使用变量来表示该数据,而不是使用常量。您可以用类似的方式声明一个变量,如下所示:

    var variableNumber: Int = 42
    

    一旦您声明了一个变量,您就可以随意地将它更改为您想要的数值,只要类型保持不变。例如,要更改上面声明的变量,可以这样做:

    variableNumber = 0
    variableNumber = 1_000_000
    

    注意:在Swift中,您可以选择使用下划线使更大的数字更易于人阅读。下划线的数量和位置由您决定。

    使用有意义的名字进行数据的命名 Using meaningful names

    始终为变量和常量选择有意义的名称。好的名称可以充当文档,使代码易于阅读。

    使用驼峰命名方式:

    • 以小写字母开头。
    • 如果名称由多个单词组成,则将它们连接在一起,并每隔一个单词以大写字母开始。
    • 如果其中一个单词是缩写,则将整个缩写用相同的大小写写下来(例如:sourceURL和urlDescription)。
    var 🐶💩:Int=-1
    

    虽然你可以使用Unicode字符为变量命名,但是在实际编程过程中还是不要这么做

    递增和递减Increment and decrement

    var counter: Int = 0
    counter += 1
    // counter = 1
    counter -= 1
    // counter = 0
    
    counter = 10
    counter *= 3  // same as counter = counter * 3
    // counter = 30
    counter /= 2  // same as counter = counter / 2
    // counter = 15
    

    翻译自Raywenderlich的Swift书籍Swift Apprentice

    相关文章

      网友评论

        本文标题:1.01表达式、变量和常量

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