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  //正确,小数被截掉 

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

     

  • 相关阅读:
    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
    iptables详解之filter
    运维自动化神器ansible之user模块
    运维自动化神器ansible之group模块
    利用sed将xml报文转换为分隔符形式报文
    你的火狐很慢吗?
    完全卸载Oracle11g
    MyEclipse注册代码
    css 空心字
    TEST 1 READING AND WRITING -- PART ONE
  • 原文地址:https://www.cnblogs.com/isItOk/p/5437916.html
Copyright © 2011-2022 走看看