免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Swift 進階(一)基礎(chǔ)語法

Swift簡介

在學習Swift之前,我們先來了解下什么是Swift

Swift是Apple在2014年6月WWDC發(fā)布的全新編程語言,中文名和LOGO是”雨燕“

Swift之父是Chris Lattner,也是Clang編譯器的作者,LLVM項目的主要發(fā)起人

Swift版本

Swift歷時七年,從Swift 1.*更新到Swift 5.*,經(jīng)歷了多次重大改變,ABI終于穩(wěn)定

API(Application Programming Interface):應用程序編程接口

  • 源代碼和庫之間的接口

ABI(Application Binary Interface):應用程序二進制接口

  • 應用程序和操作系統(tǒng)之間的底層接口
  • 涉及的內(nèi)容有:目標文件格式、數(shù)據(jù)類型的大小/布局/對齊,函數(shù)調(diào)用約定等

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:二進制代碼

關(guān)于Swift編譯流程的詳細講解可以參考以下網(wǎng)址:https://swift.org/swift-compiler/#compiler-architecture

swiftc

我們打開終端,輸入swiftc -help,會打印出相關(guān)指令,這也說明了swiftc已經(jīng)存在于Xcode中

我們可以在應用程序中找到Xcode,然后右鍵顯示包內(nèi)容,通過該路徑找到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基礎(chǔ)語法

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

Swift中一句代碼是可以省略分號的,但是如果多句代碼寫在一行,需要用分號隔開

Swift不用編寫main函數(shù),會以全局范圍內(nèi)的首句可執(zhí)行代碼作為入口來執(zhí)行

通過反匯編我們可以看到底層會執(zhí)行main函數(shù)

常量和變量

常量:

1.用let定義常量,常量只能賦值一次

不用特意指明類型,編譯器會自動進行推斷

let a: Int = 10
let b = 20

2.它的值不要求在編譯過程中確定,但使用之前必須賦值一次

這樣寫確定了a的類型,之后再去賦值,也不會報錯

let a: Int
a = 10

用函數(shù)給常量賦值也可以,函數(shù)是在運行時才會確定值的,所以只要保證使用之前賦值了就行

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里有效,在項目中無效

//: # 一級標題

/*:
 ## 基礎(chǔ)語法
 */

可以通過Editor -> Show Raw Markup來預覽

預覽的效果如下

標識符

1.標識符(比如常量名、變量名、函數(shù)名)幾乎可以使用任何字符

let
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
開發(fā)者應知道的編譯原理和語言基礎(chǔ)知識
iOS開發(fā)Swift篇—簡單介紹
編譯原理一:想初步了解編譯原理?看這篇文章就夠了
Java執(zhí)行前都干了什么?
Java代碼在我們計算機上是如何運行的?
Swift 基本語法
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服