zoukankan      html  css  js  c++  java
  • Swift

    Swift 2.0之后增加defer、guard、repeat、catch、rethrows、hrow、throws和try关键字,其中repeat关键字替代do - while循环中的do,即中repeat - while循环。而do关键字用于错误处理。catch、rethrows、throw、throws和try是错误处理关键字。

    错误处理是Swift 2.0之后增加新内容。

    defer

    guard

    repeat

    catch

    rethrows

    hrow

    throws

    try

    ======================================================

    什么是标识符呢?

    标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议等由开发人员指定的名字。

    其实,构成标识符的字母是有一定规范的,Swift中命名规则是:

    • 区分大小写,Myname与myname是两个不同的标识符;

    • 标识符首字符可以以下划线(_)或者字母开始,但不能是数字;

    • 标识符中其他字符可以是下划线(_)、字母或数字。

    例如: userName、User_Name、_sys_val、身高等为合法的标识符,而2mail、room#和class为非法的标识符。

     ==================================================

    什么是关键字呢?

    关键字是类似于标识符的保留字符序列,由语言本身定义好的,不能挪作他用,除非用重音符号(`)将其括起来。

    Swift语言常见的关键字有以下4种。

    • 与声明有关的关键字:class、deinit、enum等。

    • 与语句有关的关键字:break、case、continue等。

    • 表达式和类型关键字:as、catch、dynamicType、false等。

    • 在特定上下文中使用的关键字:associativity、convenience、dynamic等。

    Swift中关键字是区分大小写的,所以class和Class是不同的,那么Class不是Swift的关键字。

    ===============================================

    使用var还是let?

    在我们开发过程中啊什么时候定义关键字为var,还是定义为let呢?

    其实啊都能满足我们的需求,那我们到底应该如何选择?

    例如:可以将圆周率π定义为let或var。

    let π = 3.14159

    var π = 3.14159

    上面代码编译不会报错。但是从业务逻辑层面讲,π应该定义为常量(let)的,因为一方面常量(let)不能修改,另外在程序中使用常量(let)可以提高程序的可读性。

    有人说:原则上优先使用let,它有很多好处,可以防止程序运行过程中不必要的修改、提高程序的可读性。特别是引用数据类型声明时候经常采用let声明,虽然在业务层面上并不是一个常量,而是防止程序运行过程中错误地修改它引用。

    常量是标识符的前面加上关键字let。常量其值在使用过程中不会发生变化的量,下面是声明常量:

    let _Hello = "Hello"

    注意哦常量只能在初始化的时候被赋值,如果再次给_Hello赋值,

    比如: _Hello = "Hello, World"

    程序会报错的

    变量来了

     变量是在标识符的前面加上关键字var,声明变量啦:

    var scoreForStudent = 0.0

    声明Double类型scoreForStudent变量,并且初始化为0.0。

    如果在一个语句中声明和初始化了多个变量,那么所有的变量默认具有相同的数据类型(待验证):

    var x = 10, y = 20

    在多个变量的声明中,也能指定不同的数据类型哦:

    var x = 10, y = true

    其中x为整型,y为布尔型。

    ==================================================

    在Swift中,表达式有3种形式。

    l  不指定数据类型

    var a1 = 10

    l  指定数据类型

    var a1:Int  = 10

    l  使用分号

    var a1:Int = 10; vara2:Int = 20

    在Swift语言中,一条语句结束后可以不加分号也可以添加分号,但是有一种情况必须要用分号,那就是多条语句写在一行的时候,需要通过分号来区别语句。

    例如:

    var a1:Int = 10; vara2:Int = 20;

    ==================================================

     在Swift语言中主要的运算符包括算术、关系、逻辑、位运算符等。
    “ +、-、*、/ ”是算术运算符中的二元运算符,一元运算符是是-、++和--。

    •   二元运算符:

             +         加      求和,还可用String类型,进行字符串连接操作
             -   减      求差
             *   乘      求积
             /   除      求商
             % 取余   求余数

    •  一元运算符:

            -    取反符号      取反运算
           ++     自加一  先取值再加一,或先加一再取值
            --       自减一  先取值再减一,或先减一再取值

    除了一些常用的运算符,还有一些其他的:

          引用号(.):实例调用属性、方法等操作符。

          问号(?):用来声明可选类型。

          感叹号(!):对可选类型值进行强制拆封。

          箭头(->):说明函数或方法返回值类型。

          冒号运算符(:):用于字典集合分割“键值”对。

    ==================================================

    Swift中数据类型有那些呢?整型、浮点型、布尔型、字符、字符串这些类型是一定有的,其中集合、枚举、结构体、类也是Swift中的数据类型。元组是Swift中特有的。

    其他那些类型我们可能多少知道些或是听说过。元组是在Swift中有的,它是什么呢?

    它是一种数据结构,在数学中应用广泛。在计算机科学中,元组是关系数据库中的基本概念,元组表中的一条记录,每列就是一个字段。因此在二维表里,元组也称为记录。

    现在使用Swift语法表示Student元组就是:

    第一种写法

     ("1001", "张三", 30, 90)                     

    第二种写法

     (id:"1001", name:"张三", english_score:30, chinese_score:90)

    ==================================================

      在C、Objective-C和Java等其他语言中,整型之间有两种转换方法:
        从小范围数到大范围数转换是自动的;
        从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。
        而在Swift中这两种方法是行不通的,需要通过一些函数进行显式地转换,代码如下:
        let historyScore:UInt8 = 90
        let englishScore:UInt16 = 130
        let totalScore = historyScore + englishScore  //错误
        程序就会有编译错误,原因是historyScore是UInt8类型,而englishScore是UInt16类型,它们之间不能转换。
    两种转换方法:
        一种是把UInt8的historyScore转换为UInt16类型。由于是从小范围数转换为大范围数,这种转换是安全的。
    代码:
    let totalScore = UInt16(historyScore) + englishScore   //是正确的转换方法。
        另外一种是把UInt16的englishScore转换为UInt8类型。由于是从大范围数转换为小范围数,这种转换是不安全的,如果转换的数比较大可能会造成精度的丢失。
    代码:
    let totalScore = historyScore + UInt8(englishScore)  //是正确的转换方法。
    本例中englishScore的值是130,这个转换是成功的,如果把这个数修改为1300,虽然程序编译没有问题,但是会在控制台中输出异常信息。
    整型与浮点型之间的转换
        整型与浮点型之间的转换与整型之间的转换类似:
            let historyScore:Float = 90.6   
            let englishScore:UInt16 = 130 
            let totalScore = historyScore + englishScore  //错误  
            let totalScore = historyScore + Float(englishScore)  //正确,安全
            let totalScore = UInt16(historyScore) + englishScore  //正确,小数被截掉 

    ==================================================

     

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/isItOk/p/5437916.html
Copyright © 2011-2022 走看看