美文网首页
重学Swift(一)漫谈一些基础

重学Swift(一)漫谈一些基础

作者: 小白猿 | 来源:发表于2020-09-17 18:39 被阅读0次

    0.Swift语言背景的介绍

    • 历史6年(2014年6月发布),Swift从1.x发展到5.x,经历了多次重大改变,ABI终于稳定
    • ABI(Application Binary Interface):应用二进制接口,应用程序和操作系统之间的底层接口,涉及到:
      • 1.目标的文件格式
      • 2.数据类型的大小,布局,对齐
      • 3.函数的调用约定等等
    • ABI稳定以后,语法不会有太大变动
    • Swift是用C++编写的

    1. playground 使用

    关于playground的创建和使用这里不赘述了,百谷一堆(😁百度和谷歌一查一堆一堆的),它的优点就是可以试试预览一些结果,比如输入 a+b,他就能反映出a+b的结果,也可以预览一些视图的比如背景色之类的

    1.1 常用快捷键

    • cmd + shift + enter 运行整个prayground
    • shift + enter 运行到某行及之前的代码

    1.2 视图预览

    • 如果需要预览视图,需要import PlaygroundSupport,然后将要显示的view赋值给以下代码
      • PlaygroundPage.current.liveView = view
      • 如果不显示预览视图,可以试试cmd+option+enter
    • 添加图片资源,cmd+1,展开左边的文件夹目录,将资源拖拽到Resource中,则可以引用图片资源
    • Source文件夹是存放代码文件的
    • 同样也可以创建控制器,不赘述了,详细看demo

    1.3 多page介绍

    • Xcode菜单栏 File -> New -> Playground Page 或者 快捷键option+cmd+n
    • 新建的page可以自由修改名字,可以拖动位置,每个page包含单独的SourceResource,在每个page每部的文件夹内的资源是只有当前page可以使用,项目的SourceResource是所有的page都共享的
      5.多page.png

    1.4 Markdown语法支持

    playground 可以与注释配合生成对Markdown语法的渲染,这里不过多赘述Markdown的语法,百谷一堆。

    • 单行行注释的Marksown://:双反斜杠加冒号,斜杠和冒号之间不能有空格,后面跟单行的Markdow语句
    //:# 这是Markdown的一级标题
    
    • 多行注释注释的Marksown:/*: 这里写Markdown语句 */
    /*: 
     # 这是Markdown的一级标题
     ## 这是Markdown的二级标题
     ### 这是Markdown的三级标题
     */
    
    • 同一个playground下的多个page的跳转 @next@previous

      • //: [下一页](@next)自动跳转到当前page的下一个page,并显示为下一页,如果当前page没有下一页的话,则点击无效
      • //: [上一页](@previous)自动跳转到当前page的上一个page,并显示为上一页,如果当前page没有上一页的话,则点击无效
    • Markdown语法编写完毕之后通过Xcode -> Editor -> Show Rendered Markup

    2.简单入门

    这一节中我们只是泛泛的简单的演示一些操作,对于有编程基础一看就能懂的东西,不做过多赘述

    2.1 我们先创建一个命令行项目,大致观察一下项目结构

    1.commandLine 项目图
        // 导包
        import Foundation
        // 打印
        print("Hello, World!")
    
    • 项目很简单:
      • 仅包含一个main文件,
      • main文件中并没有我们熟悉的main函数,
      • 实现Hello, World!只需要一行代码,更简单甚至可以去掉导包
      • Swift项目的文件的后缀名为.swift,和OC项目不同的是,不再区分声明.h和实现.m
      • 一句代码尾部可以省略分号,多句代码如果在同一一行,必须用分号隔开

    2.2 简单了解print

    • 基本打印,在print函数里直接书输入变量名字
    • 字符拼接,只需要在字符串中使用\(变量名)进行包裹即可
      4.基本打印.png

    2.3 简单了解变量和常量

    • 常量
      • let声明不可以重复赋值,重复赋值会报错
        2.变量常量报错图.png
      • 常量不要求在编译期就明确赋值,但是只能赋值1次
      • 未标明类型的常量,或者不能通过自动推断出变量类型的,必须在声明时赋值


        6.常量报错图
    • 变量用var声明,可以重复赋值,
    • 变量或者常量不需要声明类型,编译器通过自动推断出类型


      3.自动推断.png

    3.Swift数据类型

    与OC不同的是,Swift的数据类型大致分类两种,或者三种,按照两种划分

    • 值类型 - enum + struct
    • 引用类型 - class

    按照三种划分,可以将enum 和 struct 各自作为一类。enum 这个不足赘述了,后续会详细展开,struct类型的范围是与OC最大的不同,其中Bool Int Float Double Character 以及String Array Dictionary Set都是用struct实现的


    7.数据类型

    3.1 简单介绍数据类型

    整形

    • 整形类型: Int8,Int16,Int32,Int64,UInt8,UInt16,UInt32,UInt64
    • 在32位系统,Int等价于Int32,64位系统等价于Int64

    浮点型:

    • Float 32位,精度6位,

    • Double 64位,精度至少15位

    • 浮点型定义变量时默认为Double,如果是用Float类型时,要显式标注

      // 浮点型
      let double = 15.0 // Double 类型
      let float:Float = 10.0 //Float 类型
      

    布尔类型

    • 在OC中 0,1,YES,NO,true,flase都可以作为布尔类型的赋值,但是在Swift中只能是true false,不接受其他值

    字符和字符串

    • 字符和字符串都是使用双引号,再不加类型标注的时候默认是字符串,如果是定义字符需要显式的标注

      // 字符 和 字符串
      let string = "字符串"
      let character:Character = "😁"
      

    3.2 类型转换

    • Swift在进行数值计算时,不会进行类型自动转换,比如我们以前在OC中一个浮点型 加上 一个整形数据,然后结果会看做浮点型,相当于是自动转换为优先级高的类型,但是在Swift中不允许这样进行计算,要求进行计算的结果变量类型一定是一致的,否则就会报错


      8.类型转换.png
    • Swift类型强转,格式为类型(要转换的值),下面的例子是将Float转换为Double,通过这个例子也能看出,同是浮点类型的数据,也不能直接计算

      // 浮点型
      let double = 15.0 // Double 类型
      let float:Float = 10.0 //Float 类型
      let value = double + Double(float)
      
    • 这里有个例外就是如果字面量直接向加减是不会报错的,因为没有明确的表明类型,最后系统会根据数值进行推断的

      let value = 1 + 0.5
      

    4.元组

    概念不多介绍了,百谷一堆。介绍几种赋值和定义的方式

    // 元组
    // 1.基本定义
    let tuple = (0,"我是字符串",true)
    // 2.根据每个元素名字定义
    let (intValue,stringValue,boolValue) = (0,"我是字符串",true)
    intValue
    stringValue
    boolValue
    // 3.第二种也可以省略其中不需要取值元素
    let (_,stringValue1,boolValue1) = (1,"我是字符串2",true)
    // 4.也可以在实现的时候声明元素名字
    
    let tuple2 = (int:2, string: "我是字符串3", bool:true)
    tuple2.int
    tuple2.string
    tuple2.bool
    
    9.元组演示.png

    相关文章

      网友评论

          本文标题:重学Swift(一)漫谈一些基础

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