從最基礎(chǔ)的Swift語法的開啟Swift學(xué)習(xí),本篇學(xué)習(xí)常量變量滩援、數(shù)據(jù)類型、運算符塔嬉,以及注釋
因是自己的學(xué)習(xí)筆記玩徊,所以只會寫與OC/Java差異的部分
主要內(nèi)容:
- 常量
- 變量
- 數(shù)據(jù)類型
- 運算符
- 注釋
- print使用
1租悄、常量
簡單使用
//let 常量名:類型
//不限定數(shù)據(jù)類型
let l1 = "l1"
//限定數(shù)據(jù)類型
let l2: String = "l2"
//可以在運行時確定值,因此可以賦值變量,此時必須先確定數(shù)據(jù)類型
let l3:Int
var ii = 1
l3 = ii
print("wy:\(l1)--\(l2)--\(l3)")
說明
- 可以先定義恩袱,之后再賦值
- 與其他的語言相比泣棋,Swift可以不需要在編譯的時候就有值,可以在運行時才有值
- 可以給常量賦值一個變量畔塔,此時必須先確定數(shù)據(jù)類型潭辈,以編譯時開辟空間
- 在使用前必須賦值且只能賦值一次
2、變量
簡單使用
//變量名:類型
//不限定數(shù)據(jù)類型
var i = 1
//限定數(shù)據(jù)類型
var str: String = "2"
print("wy:\(i)--\(str)")
說明
- 一般情況下編譯期會自動分析出類型澈吨,不需要自己寫
- 如果我們想要限定類型就可以自己寫
- 如果值的數(shù)據(jù)類型存在歧義編譯期無法識別就必須得自己寫把敢,比如輸入的值是小數(shù),浮點型默認(rèn)類型是Double谅辣,如果想要使用Float就需要自己寫了修赞。
- 在使用前必須賦值且只能賦值一次
3、數(shù)據(jù)類型
在Swift中對數(shù)據(jù)類型的劃分有其特殊性桑阶,將所有的類型分為值類型和引用類型(指針類型)
- 引用類型只有類類型
- 這里的枚舉和結(jié)構(gòu)體都屬于值類型
- 結(jié)構(gòu)體類型的非集合類型包括整型柏副、布爾型、浮點型蚣录、字符串割择,集合類型包括Array、Set萎河、Dictionary荔泳。
整型:
- 整型種類有:Int8、Int16公壤、Int32换可、Int64、UInt8厦幅、UInt16沾鳄、UInt32、UInt64
- 就像是GLSL語法中的數(shù)據(jù)類型确憨。后面的數(shù)字可以說明占用內(nèi)存字節(jié)的大小
- Int默認(rèn)值在64bit平臺上是8個字節(jié)译荞,在32bit平臺上是4個字節(jié)
浮點類型
- 和其他語言一樣,如果是Double類型休弃,寫成小數(shù)類型就默認(rèn)是Double
- 如果是Float類型吞歼,需要明確Float類型
布爾類型
- 值是true和false,這個與Java一樣
String塔猾、Character
- 默認(rèn)用""寫的就是String篙骡,與OC不一樣,不需要加@
- 如果需要字符類型,就需要明確Character
集合Array/Set/Dictionary
- 和Java一樣糯俗,只是不需要限定類型尿褪,用[]設(shè)置就可以
簡單使用
//這里的Float、Character必須要加數(shù)據(jù)類型得湘,其他的可加可不加
let a1: Int = 1
let a2: Float = 2.0
let a3: Bool = true
let a4: String = "a4"
let a5: Character = "5"
let array6:Array = [1,2,3]
let set7:Set = [4,5,5,5]
let dictionary: Dictionary = ["age":"18","name":"wy"]//類型要注意匹配
類型轉(zhuǎn)換
let a7: Int = 1
let a8: Double = Double(a7)
let a9: String = String(a7)
print(a9)
print(a8)
直接通過類型()來轉(zhuǎn)換
元組
在Swift中有元組概念杖玲,元組主要是為了在特殊情況下得到的對象有不用的數(shù)據(jù)類型的成員的場景使用
創(chuàng)建
/*
元組的創(chuàng)建
*/
//直接賦值
let http404Error = (404,"Not Found")
//帶有標(biāo)識符
let http202Status = (statusCode:200,desciption:"OK")
說明:
- 元組可以存儲不同數(shù)據(jù)類型的成員
- 存儲的元素可以直接存儲成員,也可以帶有標(biāo)識符用以獲取
- 一旦聲明淘正,可以改值摆马,但不能添加/刪除元素
- 不能更改已經(jīng)聲明的元素名稱
- 已聲明的名稱可以省略,但未聲明名稱的元組鸿吆,不可添加名稱:
簡單使用
/*
元組的使用
*/
//用下標(biāo)來獲取
print("The status code is \(http404Error.0)")
//用標(biāo)識符來獲取
print("The status code is \(http202Status.statusCode)")
//直接統(tǒng)一賦值給多個變量
let (statusCode,statusMessage) = http404Error
let (justTheStatusCode,_) = http202Status
let (statusCode2, statusMessage2): (Int, String) = http404Error//正確
print(statusCode2,statusMessage2)
說明:
- 獲取有兩種方式囤采,一種是直接通過下標(biāo)獲取,一種是通過標(biāo)識符來獲取
- 也可以直接賦值給兩個變量/常量
- 取值時可以指定類型伞剑,加強類型判斷
- 不想處理的值斑唬,可以用下劃線_代替
和結(jié)構(gòu)體的區(qū)別:
- 結(jié)構(gòu)體可以存儲函數(shù),元組不可以
- 結(jié)構(gòu)體只能直接存儲成員黎泣,元組可以存儲帶有標(biāo)識符的成員
4恕刘、注釋
也是多行注釋、單行注釋抒倚、文本注釋褐着,和其他語言都是一樣的
注意:
- 多行注釋可以嵌套
- Playground中的注釋可以用MarkUp語法,如果平常寫博客應(yīng)該會很清楚托呕,這樣增加了注釋的可讀性
文檔注釋使用
/// 求和【概述】
///
/// 將兩個整數(shù)相加【更詳細(xì)的描述】
/// - Parameters:
/// - v1: v1 第一個整數(shù)
/// - v2: v2 第二個證書
/// - Returns: 2個整數(shù)的和
///
/// - Note : 傳入2個證書即可【批注】
func sum(v1: Int,v2: Int) -> Int {
v1 + v2
}
5含蓉、運算符
注意:沒有自增和自減運算符,其他的均與OC一樣
6项郊、print函數(shù)的認(rèn)識
定義:
/// - Parameters:
/// - items: Zero or more items to print.
/// - separator: A string to print between each item. The default is a single
/// space (`" "`).
/// - terminator: The string to print after all items have been printed. The
/// default is a newline (`"\n"`).
public func print(_ items: Any..., separator: String = " ", terminator: String = "\n")
說明:
- 第一個參數(shù)items是可變參數(shù)馅扣,因此它可以是0個或多個參數(shù),
- 第二個參數(shù)separator是參數(shù)中間的分割字符着降,默認(rèn)是" "
- 第三個參數(shù)terminator是字符串末尾的字符差油,默認(rèn)是"\n",換行
使用示例:
let ss = "swift"
print("快樂","學(xué)習(xí)","\(ss)語言", separator: "-", terminator: "~啦啦")
運行結(jié)果:
7任洞、其他
特殊點
- 不用編寫main函數(shù)蓄喇。
- Swift會將全局范圍內(nèi)的首句作為可執(zhí)行代碼的入口程序。
- 當(dāng)然這并不代表Swift真的不需要main函數(shù)交掏,而是編譯期在底層會幫我們自動創(chuàng)建main函數(shù)
- 一句代碼的尾部可以省略分號(;)妆偏。
- 如果一行只有一條語句,語句末尾可以寫分號盅弛,也可以不寫分號钱骂,系統(tǒng)會自動通過換行來判斷語句
- 如果鍵多條語句寫到同一行中叔锐,就必須用分號來隔開了。
Playground
Playground可以用來快速預(yù)覽代碼效果罐柳,可以很方便的學(xué)習(xí)語法掌腰,因此接下來的代碼驗證調(diào)試主要會使用Playground。