Swift之基本運(yùn)算、數(shù)據(jù)類型、元組

為了表示我對(duì)簡(jiǎn)書『飽醉豚』事件的不滿,簡(jiǎn)書不再更新,后續(xù)有文章只更新 個(gè)人博客掘金

歡迎移步 個(gè)人博客
或者 掘金

本文首發(fā)于我的個(gè)人博客

引言

Swift編程語(yǔ)言,支持多編程范式和編譯式,用來(lái)撰寫基于macOS/OS X、iOS、watchOS和tvOS的軟件。 蘋果公司于2014年在蘋果開發(fā)者年會(huì)(WWDC)發(fā)布了Swift編程語(yǔ)言。從設(shè)計(jì)上蘋果公司讓Swift與Objective-C共存在蘋果公司的操作系統(tǒng)上

蘋果宣稱Swift的特點(diǎn)是:快速、現(xiàn)代、安全、互動(dòng),而且明顯優(yōu)于Objective-C語(yǔ)言。Swift以LLVM編譯,可以使用現(xiàn)有的Cocoa和Cocoa Touch框架。Xcode Playgrounds功能是Swift為蘋果開發(fā)工具帶來(lái)的最大創(chuàng)新,該功能提供強(qiáng)大的互動(dòng)效果,能讓Swift源代碼在撰寫過程中能即時(shí)顯示出其運(yùn)行結(jié)果

2015年6月8日,蘋果于WWDC2015上宣布,Swift將開放源代碼,包括編譯器和標(biāo)準(zhǔn)庫(kù)
2015年12月3日,蘋果宣布開源Swift,并支持Linux,蘋果在新網(wǎng)站Swift.org和托管網(wǎng)站Github上開源了Swift,但蘋果的app store并不支持開源的Swift,只支持蘋果官方的Swift版本,官方版本會(huì)在新網(wǎng)站Swift.org上定期與開源版本同步

之前由于每個(gè)版本都不兼容,所以對(duì)開發(fā)者不友好,每次新版本,就像學(xué)了一門新的語(yǔ)言。但是從Swift5開始,API終于穩(wěn)定下來(lái)了??梢詠?lái)總結(jié),學(xué)習(xí)一下Swift了。

一些基本操作

  • 生成語(yǔ)法樹: Swiftc -dump-ast main.Swift
  • 生成最簡(jiǎn)潔的SIL代碼:Swiftc -emit-sil main.Swift
  • 生成LLVM IR代碼: Swiftc -emit-ir main.Swift -o main.ll
  • 生成匯編代碼: Swiftc -emit-assembly main.Swift -o main.s

基礎(chǔ)語(yǔ)法

  • 不用編寫main函數(shù),Swift將全局范圍內(nèi)的首句可執(zhí)行代碼作為程序入口
  • 一句代碼尾部可以省略分號(hào)(;)
  • 多句代碼寫到同一行時(shí)必須用分號(hào)(;)隔開
  • 用var定義變量,let定義常量,編譯器能自動(dòng)推斷出變量\常量的類型
  • Playground可以快速預(yù)覽代碼效果,是學(xué)習(xí)語(yǔ)法的好幫手
  • Command + Shift + Enter: 運(yùn)行整個(gè)Playground
  • Shift + Enter:運(yùn)行截止到某一行代碼

例如

var a = 10
a = 20
let b = 88
let c = 12 ; let d = 40
print(d)

創(chuàng)建對(duì)象,例如view視圖,控制器等也更簡(jiǎn)單

注釋

和OC一樣,有單行注釋,多行注釋
例如

// 單行注釋

/*
 多行注釋
 
 */
 

但是,Swift中增加了,注釋的嵌套,比如這樣是可以的

/*
 多行注釋
 /*
 
 // 單行注釋
 
 嵌套多行注釋
 */
 
 */

Playound的注釋是支持markup(類似Markdown)語(yǔ)法的

  • 開啟markup:Editor->Show Rendered Markup
  • 只能在Playground中使用

常量

  • 只能賦值1次
  • 常量的值不要求在編譯的時(shí)候確定,只要在使用之前賦值一次就可以了
    例如下面都是可以的
var num = 10
num += 20
num += 30
let age = num
print(age)

func getAge() -> Int {
    return 10
}
let age2 = getAge()
print(age2)

但是下面這種是不可以的,因?yàn)樵诔跏蓟?,是不可以使用?/p>

let number: Int
print(number)

當(dāng)然了,這種也是不行的

let number
number = 25

標(biāo)識(shí)符

比如常量名,變量名,函數(shù)名等標(biāo)識(shí)符

  • 標(biāo)識(shí)符不能數(shù)字開頭,不能包含空白字符,制表符,箭頭燈特殊字符。
  • 除此之外,幾乎可以使用任何字符。

常見數(shù)據(jù)類型

  1. 值類型(value type)
    • 枚舉(enum): optional
    • 結(jié)構(gòu)體(struct): Float、 Double、Float、Int、Character、String、Array、Dictionary、Set
  2. 引用類型(reference type)
    • 類(class)

類型轉(zhuǎn)換

不同類型之間的轉(zhuǎn)換,比如

// 整數(shù)轉(zhuǎn)換
let a: UInt16 = 2_000
let b: UInt8 = 10
let c = a + UInt16(b)
print(c)


//整數(shù)和浮點(diǎn)數(shù)轉(zhuǎn)換
let intNumber = 3
let doubleNumber = 0.1415926
let pi = Double(intNumber) + doubleNumber
let intPi = Int(pi)

// 字面量可以直接相加,因?yàn)樽置媪繘]有明確的類型
let res = 3 + 2.565


元組

元祖可以把多個(gè)值保存在一起

格式: (數(shù)值1, 數(shù)值2, 數(shù)值3)
let numbers = (10, 20, 30)
// 可以通過索引訪問
numbers.0
numbers.1
numbers.2

元祖中還可以保存不同的數(shù)據(jù)類型的值

let person = (name: "lnj", age: 30, score: 100.0)
// 可以通過名稱訪問
person.name
person.age
person.score

我們甚至可以這樣子

// 相當(dāng)于同時(shí)定義了三個(gè)變量
let (name, age, score) = ("lnj", 30, 80)
name
age
score

參考資料:

Swift官方源碼

從入門到精通Swift編程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容