Swift學習總結 - 1

  1. 發(fā)布于2014年WWDC,支持iOS、OS X、watchOS,結合了C和Objective-C的優(yōu)點的一門新語言。
  2. 特性
  • 安全性 提供了更多安全措施,比如值使用前初始化、自動內(nèi)存管理等。
  • 快速性 llvm編譯框架,運行速度快。
  • 表現(xiàn)力 語法簡單,易于閱讀維護。
  • 兼容性 繼承了c語言和oc的特性,并克服了C的兼容性問題。

還有以下特點:

  • 沒有宏系統(tǒng),其協(xié)議和擴展源自oc
  • 采用let常量、var變量聲明變量
  • 沒有顯示指針,而是像C#語言一樣,依賴值類型/引用類型
  • 不支持強制轉(zhuǎn)換
  1. Swift具有強大的命名字符集,支持代碼預覽,我們可以通過playground來學習swift的語法
    file - new - playground

    playground

  2. 變量和常量
    變量和常量都要有類型, 值必須與分配的類型相同,代碼結尾;不要求,加不加都不會報錯,注釋與OC相同

var aVariable = 100
aVariable = 50
let string = "string"
/** 多變量 逗號 分割 */
var x = 0.0, y = 0.0, z = 0.0
  1. 類型 寫法
    var 標識符:類型 = 初始值
    let 標識符:類型 = 初始值
var name: String = "Mark"
let x: Int = 1
let y: Int = 2
let z: Int = 3
print(x + y + z)
  1. 字符串
    支持轉(zhuǎn)義字符,多行需要在首行、尾行添加三引號,并需要刪除縮進效果
let label = "The width is "
let width = 100
let widthLabel = label + String(width)
print("The width is \(width)")
let quotation = """
I have \(x + y + z) apples.
And you said you
"""
  1. 數(shù)組、字典、集合、元組
    數(shù)組:存放相同數(shù)據(jù)類型元素,有序
var productList = ["apple", "orange", "banana"]
productList[1] = "purple"
print(productList)
productList.append("water")
// 創(chuàng)建空數(shù)組
productList = []
print(productList)
let shoppingList: [String] = []

字典:存放key-value對元素

var productInfo = ["name": "apple", "price": String(4)]
productInfo["color"] = "green"
print(productInfo)
// 創(chuàng)建空字典
productInfo = [:]
print(productInfo)
let occupations: [String: Float] = [:]

集合:無序、不重復的相同類型元素

let favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]

元組:不同數(shù)據(jù)類型元素的集合

let aturple = (21, 180, 60, "healthy", true)
  1. 可選類型Optional
    可選類型Optional是Swift特有的數(shù)據(jù)類型,可選類型的值可能是某個類型的值也可能是nil(表示沒有值),可選類型的定義,在類型后面加“?”,nil可以表示變量值缺失。
    可選項類型

可選類型在使用的時候必須要拆包,下面提供Optional的三種使用方式:

  • 隱式拆包
    在定義可選類型的時候使用“!,后面使該可選類型的時候不需要強制解包
let string1: String! = "Hello"
string1.count
  • 強制解包
    使用可選類型變量時,在其后加“!,如果使用不合法編譯器會報錯。
let string0: String? = "Hello"
print(string0!)
string0!.count
// 添加保護判斷,否則nil時會報錯
if string0 != nil{
    let count = string0!.count
    print(count)
}
  • if-let可選綁定
    使用if let臨時常量 = 可選類型 來判斷可選類型是否包含值,如果包含就把值賦給臨時常量,否則(可選類型為nil時)if語句判斷為假。
    例1:
var optionalName: String? = "John"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello,\(name)"
    print(greeting)
    print(name)
}

例2:

var string5: String? =  "Marry"
/**
 ① 使用`a ?? b`合并空值運算符的方式來解包,如果有值,則為count,如果為nil,則默認0
 使用合并控制運算符有兩個條件:
 1. 表達式a必須是可選類型
 2. 表達式b必須和a的處處類型相同
 */
if string5 != nil{
    let count = string5?.count;
    print(count ?? 0)
}
// 使用可選項綁定來判斷可選項是否有值,如果有就賦值給臨時變量。同一個if語句可以有多個可選項綁定,用, 分開即可
// ② 使用可選項綁定
if let tempStr = string5{
    let count = tempStr.count
    print(count)
}
  1. 條件語句
  • if分支語句:
var teamScore: Float = 0
let personalScore = 51.0
if personalScore > 50.0{
    teamScore += 3
}else{
    teamScore += 1
}
print(teamScore)
  • switch分支語句:
var vegetable = "red pepper"
switch vegetable{
    case "celery":
        print("Add some raisins and make ants on a log.")
    case "cucumber", "watercress":
        print("That would make a good tea sandwich.")
    case let x where x.hasSuffix("pepper"):
        print("Is it a spicy \(x)")
    default:
        print("Everything tastes good in soup")
}
  1. 循環(huán)語句
    for循環(huán):
var total = 0
for i in 0..<4{
    total += i
}
print(total)

不使用循環(huán)每一項的值時,可以使用下劃線“_”替代變量名:

let max = 10
let base = 3
for _ in 1...max{
    total += base
}
print(total)

循環(huán)取數(shù)組值:

let array = [1, 3, 5, 7, 9]
var total = 0
for num in array{
    total += num
}
print(total)

取字典中值:

let interestingNumbers = ["Prime": [2, 3, 5, 7, 11, 13],"Fibonacci": [1, 1, 2, 3, 5, 8],"Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (_, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
print(largest)

while循環(huán)(當型循環(huán)):

var n = 2
while n < 100{
    n *= 2
}
print(n)

while-repeat循環(huán)(直到型循環(huán):循環(huán)體至少執(zhí)行一次)

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

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

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