• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift 进阶(一)基础语法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Swift简介

在学习Swift之前,我们先来了解下什么是Swift

Swift是Apple在2014年6月WWDC发布的全新编程语言,中文名和LOGO是”雨燕“

Swift之父是Chris Lattner,也是Clang编译器的作者,LLVM项目的主要发起人

Swift版本

Swift历时七年,从Swift 1.*更新到Swift 5.*,经历了多次重大改变,ABI终于稳定

API(Application Programming Interface):应用程序编程接口

  • 源代码和库之间的接口

ABI(Application Binary Interface):应用程序二进制接口

  • 应用程序和操作系统之间的底层接口
  • 涉及的内容有:目标文件格式、数据类型的大小/布局/对齐,函数调用约定等

Swift是完全开源的,下载地址:https://github.com/apple/swift

Swift编译原理

LLVM编译器

LLVM编译器一般分为前端和后端

  • 前端:主要进行词法分析,生成语法树
  • 后端:生成对应平台的二进制代码

编译流程

我们知道OC的前端是通过Clang进行编译的,Swift的前端是通过swiftc来编译的

不同语言的前端可能不同,但最终都会通过编译器的后端生成对应平台的二进制代码

整个编译流程如下图所示

  • Swift Code:我们编写的Swift代码
  • Swift AST:Swift语法树
  • Raw Swift IL:Swift特有的中间代码
  • Canonical Swift IL:更简洁的Swift特有的中间代码
  • LLVM IR:LLVM的中间代码
  • Assembly:汇编代码
  • Executable:二进制代码

关于Swift编译流程的详细讲解可以参考以下网址:https://swift.org/swift-compiler/#compiler-architecture

swiftc

我们打开终端,输入swiftc -help,会打印出相关指令,这也说明了swiftc已经存在于Xcode中

我们可以在应用程序中找到Xcode,然后右键显示包内容,通过该路径找到swiftc

路径:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin


swiftc的基本操作演练

下面我们可以通过一些swiftc的一些基本操作来了解

1.我们先新建一个Swift的命令行项目


2.然后打开终端,cdmain.swift路径

3.然后我们输入swiftc -dump-ast main.swift,来查看下生成的语法树

4.我们还可以输入swiftc -emit-sil main.swift生成最简洁的SIL代码

5.我们还可以输入swiftc -emit-ir main.swift生成LLVM IR中间代码

6.我们还可以输入swiftc -emit-assembly main.swift生成汇编代码

Swift基础语法

Swift中打印输入:print("Hello World")

Swift中一句代码是可以省略分号的,但是如果多句代码写在一行,需要用分号隔开

Swift不用编写main函数,会以全局范围内的首句可执行代码作为入口来执行

通过反汇编我们可以看到底层会执行main函数

常量和变量

常量:

1.用let定义常量,常量只能赋值一次

不用特意指明类型,编译器会自动进行推断

let a: Int = 10
let b = 20

2.它的值不要求在编译过程中确定,但使用之前必须赋值一次

这样写确定了a的类型,之后再去赋值,也不会报错

let a: Int
a = 10

用函数给常量赋值也可以,函数是在运行时才会确定值的,所以只要保证使用之前赋值了就行

func getNumber() -> Int {
    return 10
}

let a: Int
a = getNumber()

如果没有给a确定类型,也没有一开始定义的时候赋值,就会像下面这样报错

变量:

1.用var定义变量

var b = 20
b = 30

2.常量、变量在初始化之前,都不能使用

注释

1.Swift中有单行注释和多行注释

注释之间嵌套也没有问题

// 单行注释

/*
 多行注释
 /*
 多行注释
 */
 
 /*
 // 注释嵌套
 */

2.Playground里的注释支持Markup语法(同Markdown)

Markup语法只在Playground里有效,在项目中无效

//: # 一级标题

/*:
 ## 基础语法
 */

可以通过Editor -> Show Raw Markup来预览

预览的效果如下

标识符

1.标识符(比如常量名、变量名、函数名)几乎可以使用任何字符

let             
                

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift使用查阅资料备份2发布时间:2022-07-13
下一篇:
全国银行SWIFT代码查询发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap