美文网首页iOS DeveloperiOS开发程序员
Swift3.0 语法概述 (初级篇)

Swift3.0 语法概述 (初级篇)

作者: 绍清_shao | 来源:发表于2017-03-13 17:41 被阅读127次

    前言

    准备打算用一个月时间学习Swift,包括语法跟实战,顺便写写博客记录学习里程,方便日后重拾。

    目录

    • Playgrounds
    • 表达式,变量 & 常量
    • 自增 自减
    • 类型转换
    • 字符串(Strings)的使用
    • 元组(Tuples)

    Playgrounds

    • 新建Playgrounds
      包括命名存放位置等等····
      用Playgrounds的好处是不用运行可以知道结果,所以用来学习语法再好不过了。


      Paste_Image.png
    • Playgrounds概述
    Paste_Image.png
    1. 代码编写区
    2. 编写代码结果的显示
    3. Playgrounds默认是自动执行,这意味着写完代码下一刻就能看到输出结果了。按住不放,就可以看到两个选项,1.自动执行 2.手动执行
    4. 显示的是playground的状态,只要不停的输入代码,就好会菊花器不舍昼夜的转,表示正在执行···
    5. 略(这个自己点的看看就知道是干什么的了)

    表达式,变量 & 常量

    • 代码注释
      单行注释
      // 这是单行注释
      多行注释
    /* 这是注释
         依然是注释
         还TM是注释 ... */```
    * 控制台打印结果
    ` print("Hello , Swift Apprentice reader!") `
    
    ![Paste_Image.png](https://img.haomeiwen.com/i1292402/b096cf530b36a0d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    * 算术运算
    这里要注意的是书写格式,要么操作符(+ - * /)两边都不要空格,要么都加空格。
    

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

    • 数学函数
      Swift中已经包含大部分数学函数,下面看看怎么用吧~
    sin(45 * Double.pi / 180)
    // 0.7071067811865475
    cos(135 * Double.pi / 180)
    // -0.7071067811865475
     sqrt(2.0)
    // 1.414213562373095
    
    max(5, 10)
    // 10
    min(-5, -10)
    // -10
     max(sqrt(2.0), Double.pi / 2)
    // 1.570796326794897
    
    • 常量 & 变量
      常量
     let number: Int = 10
    number = 20             //error 值不可变
    

    变量

    var variableNumber: Int = 42
    variableNumber = 0                   //OK
    variableNumber = 1_000_000   //OK
    
    Paste_Image.png
    • 常量 & 变量命名
      继承OC语言风格使用驼峰命名法,第一个单词首个字母小写后面单词第一个字母大写,命名尽量清晰明了。
      例如:
    let personAge: Int = 10
    let numberOfPeople: Int = 10
    

    自增 自减

    var counter: Int = 0
    counter += 1     //等于 counter = counter + 1
    // counter = 1    
    counter -= 1      //等于 counter = counter - 1
    // counter = 0     //
    

    有一点需要注意的是现在swift中不支持 ++ 和 -- 了,使用了++或者--就会出现编译错误❌

    Paste_Image.png

    同样的,对应乘除也是适用的

    var counter: Int = 10
    counter *= 3  // same as counter = counter * 3
    // counter = 30
    counter /= 2  // same as counter = counter / 2
    // counter = 15
    

    类型转换

    • 赋值运算两边类型转换
    var integer: Int = 100
    var decimal: Double = 12.5
    integer = decimal```
    如果想把Double型变量赋值给Int型,就会出现`
      Cannot assign value of type 'Double' to type 'Int'`错误,我们潜意识中认为不会出错,但是swift是强类型语言,所以必须相同的类型才能赋值。
    像这样:
    

    var integer: Int = 100
    var decimal: Double = 12.5
    integer = Int(decimal) // integer = 12

    * 操作符与混合类型
    

    let hourlyRate: Double = 19.5
    let hoursWorked: Int = 10
    let totalCost: Double = hourlyRate * hoursWorked // error
    let totalCost: Double = hourlyRate * Double(hoursWorked) //OK

    上述代码会出现`Binary operator '*' cannot be applied to operands of type 'Double' and
    'Int'`错误,其他数学运算对于不同的类型也会出现类似错误。在swift中,必须明确类型,因为结果只有一个类型。
    * 类型推断
    顾名思义就是声明的变量或常量根据赋值右值类型判断自己的类型。
    例如:
    

    let wantAInt = 3 // wantADouble is Int
    let wantADouble = 3.0 // wantADouble is Double

    按住option鼠标点击变量或常量名就可以看到类型了
    
    ![Paste_Image.png](https://img.haomeiwen.com/i1292402/baa9497845a7da5f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    #### 字符串(Strings)的使用
    字符串其实就是字符(characters)的集合,swift可以直接操作字符串(strings)和字符(characters)
    

    let characterA: Character = "a"
    let characterDog: Character = "👻"
    let stringDogA: String = "Dog"
    let stringDogB = "Dog" // stringDogB is String
    let stringDogC: String = "a" // stringDogC is String```
    这里需要注意的是,无论赋值字符串或者字符给变量(常量),都会被推断为String,如果要声明为字符类型一定要明确。像这样 :let characterA: Character = "a"

    • 操作字符串
      无论是字符串的拼接还是插入数字都非常方便
    //拼接
    var message = "Hello" + " my name is "  //message = "Hello my name is"
    let name = "Matt"
    message += name // message "Hello my name is Matt"
    //插入数字
    messageAge = ""
    let age = 10
    messageAge += " My age is" + String(age)" //My age is 10
    //插入字符串
    message = "This is string "
    let exclamationMark: Character = "a"
    message += String(exclamationMa) //This is string a
    

    拼接或插入之前都要转换为String类型,其实还有一种更逆天的方法,使用 \(),不但逆天,而且通俗易懂

    var message = ""
    let age = 10
    let rate = 2
    let character: Character = "a"
    message = "Hello, my age is \(age)"//"Hello, my age is 10"
    message = "10 years later,my age is \(age * rate)" //10 years later,my age is 20
    message = "I like \(character)" //"I like a"
    

    元组(Tuples)

    swift中使用tuple来表示简单的有关联的数据,比如说一对二维坐标(x ,y)

    let coordinates: (Int, Int) = (2, 3)
    // 也可以使用类型推断
    let coordinates = (2.1, 3.2) // coordinates被推断的类型为: (Double, Double)
    // 分别打印坐标的值,访问元组第一个成员 元组名.0,第二个第三个以此类推···
    print("x坐标为\(coordinates.0)") //x坐标为2.1
    print("y坐标为\(coordinates.1)") //y坐标为3.2
    

    其实swift中支持为元组成员命名

    let coordinatesNamed = (x: 2, y: 3) // 这时被推断类型为: (x: Int, y: Int)
    // 访问
    print("x坐标为\(coordinates.x)") //x坐标为2
    print("y坐标为\(coordinates.y)") //y坐标为3
    

    总结

    初级篇就先写这么多了,后面会陆续写更复杂一点的语法内容。当然,除了语法外还有实战篇。

    相关文章

      网友评论

        本文标题:Swift3.0 语法概述 (初级篇)

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