2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法
Swift快速入門(一)之 Swift基礎(chǔ)語法
近期重新學(xué)習(xí)了一遍Swift語言,主要以《Swift編程權(quán)威指南(第2版)》為教程,學(xué)習(xí)過程中結(jié)合比對Java語言特性將學(xué)習(xí)心得作為三篇筆記:Swift基礎(chǔ)語法,Swift面向?qū)ο缶幊?#xff0c;Swift高級編程。本文為第一篇《Swift基礎(chǔ)語法》主要涵蓋以下內(nèi)容
- 類型、常量和變量
- if-else條件語句
- switch語句
- 數(shù) 整數(shù)和浮點數(shù)
- 循環(huán) for和while
- 字符串
- 可空類型
- 數(shù)組 Array
- 集合 Set
- 字典 Dictionary
類型、常量和變量
//常量的聲明 let //聲明一個Int常量,常量一旦聲明后不可變化 let num:Int = 2019 print(num)//變量的聲明 var //聲明一個字符串變量:聲明一個名為name的變量,其類型是String,初始值是”Tom“ var name:String = "Tom"//總結(jié):對必須變化的實例用變量,其他都用常量//Switf支持類型推斷:聲明變量或常量時無需聲明類型,編譯器會根據(jù)初始值內(nèi)容進行推斷 let n = 2019 //根據(jù)2019內(nèi)容自行推斷 實例n的類型為Int let firstName = "Nik" var lastName = "Lily" print(n)Swift中數(shù) 分為 整數(shù)和浮點數(shù)
```swift
//1. 整數(shù)類型的變量的聲明
var i1:Int = 10
var f1:Float = 10.0 //32位
var d1:Double = 10.0 //64位
//2. 類型轉(zhuǎn)換
// Java中兩個不同精度的數(shù)值相加會自動轉(zhuǎn)換為較高精度,但Swift中需要手動轉(zhuǎn)換類型使之匹配
//let number = i1 + f1 //不同類型數(shù)據(jù)相加 在swift中會異常
let number = Double(i1) + d1
print(str)
print(number)
//3. 浮點數(shù)
//浮點數(shù):Float 32位,Double 64位
//浮點數(shù)默認的類型推斷是 Double
let n2 = 1.98
print(type(of: n2)) //輸出結(jié)果 Double
if-else if 的使用
let age = 58 if age <= 18{print("未成年人") }else if age<55 {print("青壯年") }else {print("老年人") }if-else 嵌套語句
let age = 88 if age > 18{if age>60{ //print("老年人")}else{print("成年人")} }else {print("未成年人") }三目運算 :理解為簡化版 if-else使用
a?b:c “如果a為真,則執(zhí)行b;否則執(zhí)行c”
let age = 20 var result = age > 18 ? "成年人" : "未成年人"; print(result)邏輯運算符
&& 邏輯與:當(dāng)且僅當(dāng)兩者都為真時結(jié)果為真 || 邏輯或:兩者任意之一為真結(jié)果為真 ! 邏輯非:真變假,假變真switch語句:用于處理多重條件的情況
區(qū)別:if else用于處理”非此即彼“的情況,swith用于處理多重條件的情況
ps:先上結(jié)論
switch語句特性
swith 使用匯總
var code = 401 var erroInfo:String = "erro code is:" switch code { case 200,201,202:print("Http success ") case 300...399: //...區(qū)間print("300系列錯誤") case let code where (code >= 400 && code <= 499) : //where語句的使用,篩選條件erroInfo += "(code) 400系列錯誤" // fallthrough //不需要匹配進入下一個分支并執(zhí)行代碼 default:erroInfo += "(code)" //字符串插值print("其他錯誤") }關(guān)于switch語法使用一一道來
switch語句
var httpcode=400 switch httpcode{ case 200:print(httpcode) case 400:print(httpcode) default:print("default") }switch分支可以使用多個值
var httpcode=400 switch httpcode{ case 200:print(httpcode) case 400,401,402:print("服務(wù)器異常") default:print("default") }switch可以是一個值,多個值,區(qū)間
var httpcode=322 switch httpcode{ case 200:print(httpcode) case 300...399:print(httpcode) case 400,401,402:print("服務(wù)器異常") default:print("default") }值綁定(字符串插值)占位符
var httpcode=322 var resultstr="" switch httpcode{ case 200:resultstr="OK" case 300...309:resultstr="redirect:(httpcode)" case 400,401,402:resultstr="client erro:(httpcode)" case let unkwnowncode:resultstr="(unkwnowncode) is not known erro code" }default 語句(不是必需的)
var httpcode=800 switch httpcode{ case 200:print(httpcode) case 300...399:print(httpcode) case 400,401,402:print("服務(wù)器異常") default:print("default httpcode:(httpcode)") }用where語句創(chuàng)建篩選條件
var httpcode:Int = 205 switch httpcode{ case 200:print(httpcode) case 300...399:print(httpcode) case 400,401,402:print("服務(wù)器異常") case let unknowcode where (unknowcode>201 && unknowcode<208): //指定httpcode 范圍print("unknowcode where httpcode:(httpcode)") //where default:print("default httpcode:(httpcode)") }元組和模式匹配
元組是把具有邏輯關(guān)聯(lián)的兩個或多個變量的組合,組合的結(jié)果是一個有序列表
var httpCode=200 var msg="message:" switch httpCode{ case 200:msg+="成功" case 300...399:msg+="重定向" case 400,401,402:msg+="服務(wù)器錯誤" default:msg+="未知" } let erro=(httpCode,msg) //訪問元組 erro.0 erro.1 //通過序號訪問元組元素 //1.9給元組的元素別名 let erro2=(code:httpCode,erroInfo:msg) erro2.code erro2.erroInfo用元組做模式匹配
var firstCode:Int=201 var secondCode:Int=404 let erro=(firstCode,secondCode) switch erro{ case (201,400):print("201,400") case (200,_):print("200,_") case (_,404):print("_,404") default :print("default") }switch 和 if-else
var age=23 switch age{ case 18...28:print("年輕人") default:print("age =:(age)") //default 語句 } //使用if-case替代,不需要寫不關(guān)注的default分支,更關(guān)注核心代碼邏輯 var age=23 if case 18...28=age{print("年輕人") }var age=26 if case 18...28=age,age>25{print("大于25歲的年輕人") }循環(huán)
- for循環(huán)
- while 循環(huán)
for-in 循環(huán)的用法
var number:Int = 0; for i in 1...5{ //遍歷 1至5 // print(i)number += 1print(number) }不需要迭代器i的用法
for _ in 1...5 {number += 1print(number) }帶where語句的for-in循環(huán)
for i in 1...10 where i % 3 == 0 {print(" 能被3整除的數(shù):(i)") }while循環(huán)的使用
var number:Int = 3 while number > 0 {print(" while 循環(huán) (number)")number -= 1; }repeat-while 循環(huán),相當(dāng)于java中的 do-while循環(huán)
repeat{print(number)number += 1 }while number <= 3break和continue的區(qū)別
```swift
for i in 1…10
{
if(i==3)
{break
}
print(i)
}
print(“continue的區(qū)別”)
for i in 1…10
{
if(i==3)
{
continue //跳過3
}
print(i)
}
可空類型 Optional
可空類型Optional是Swift的獨特特性,用來指定某個實例沒有值。一個可空類型的實例,要么已經(jīng)可用,要么沒有值就稱為nil。
聲明可空類型
通過這種方式,編譯器知道實例是否可能為nil,這種顯示的聲明讓代碼更具表達力,也更安全。
var erroInfo :String? //聲明可空類型 ? print(erroInfo) //輸出nil //erroInfo += "test" erroInfo = "test" print(str) //輸出 ”Swift“ print(erroInfo) //輸出 Optional("test")增加條件語句
if erroInfo != nil {let theErro = erroInfo! //感嘆號的作用是強制展開可空類型print(theErro) //輸出"test" }可空類型的示例綁定
if let theErrors = erroInfo {//當(dāng)erroInfo不為nil 則給theErrors賦值,并執(zhí)行當(dāng)前代碼塊print(theErrors) }展開多個可空實例
var code : Int? code = 401 if let theError = erroInfo, let theCode = code {print("展開多個可空實例")print(theCode)print(theError) }else {print("不滿足") }展開多個可空實例,和額外檢查
if let theError = erroInfo, let theCode = code, code == 402 {print("展開多個可空實例")print(theCode)print(theError) }隱式展開可空實例
可空鏈?zhǔn)秸{(diào)用
可空鏈?zhǔn)秸{(diào)用允許把多個查詢串聯(lián)為一個可空實例的值,如果查詢鏈中任意可空實例是nil,則返回nilvar erroInfo = nil //當(dāng) erroInfow不為空,則轉(zhuǎn)為大寫,為空則返回nil var erroInfoUp = erroInfo?.uppercased() // print(erroInfoUp) //原地修改可空實例 var newErroInfo = erroInfo?.appending("6666") print(newErroInfo)
nil合并運算符
數(shù)組 Array
數(shù)組是有序的
//數(shù)組的兩種聲明方式 var data:Array<String> //聲明一個字符串?dāng)?shù)組 var datas2:[String] //聲明一個字符串?dāng)?shù)組var arrs2:[String] = ["xx","yy"] //初始化數(shù)組 var arrs = ["a1"] //數(shù)組聲明的類型推斷 print(arrs) arrs.append("appenData") print(arrs) arrs[0] += "ap" arrs[1] = "d2" //替換指定下標(biāo)的元素 print(arrs) print("數(shù)組長度count = (arrs.count)") arrs += arrs2 //兩個數(shù)組相加 print(arrs) print("------指定位置插入一個元素 'EN'-------") arrs.insert("EN", at: 2) print(arrs) print(arrs[0...2]) //打印下標(biāo)前三的元素var newArr = ["xx","yy"] //判斷兩個數(shù)組是否相等,數(shù)組是有序的,需元素順序和內(nèi)容完全一致才算相等 print(newArr == arrs2) print("常量數(shù)組 一旦創(chuàng)建不可修改") let finalArrays = ["a","b"] print(finalArrays) //finalArrays[0] = "66"集合 set
集合是無序、元素唯一
//初始化一個集合 var hashSet = Set<String>() //聲明一個String類型的集合 var set1:Set = ["a","b","c"] print(set1)//集合增加元素 hashSet.insert("a") hashSet.insert("b") print(hashSet) 循環(huán)遍歷插入 for i in 4...8 {hashSet.insert("number (i)") } //print(hashSet)//包含指定元素 hashSet.contains("a") print(hashSet.contains("a")) //print(hashSet.contains(set1))//并集 union let newSet = hashSet.union(set1) print(newSet)//交集 intersection,返回兩個集合的共同部分的集合 let intersectionSet = hashSet.intersection(set1) print("intersection (intersectionSet)")//不相交,判斷兩個集合是否不相交, 相交則返回false let isDisjointSet = hashSet.isDisjoint(with: set1) print(isDisjointSet)字典 Dictionary
Dictionary字典的四種初始化方式
var dict1 : Dictionary<String , Integer> = [:] var dict2 :[String:Integer] = [:] var dict3 = Dictionary<String,Integer>() var dict4 = [String : Integer]()字典初始化的類型推斷
var dict :Dictionary<String,Int> = ["Tom":12 , "Jerry":18] var dict2 = ["Tom":12 , "Jerry":18]字典value的修改
var dict :Dictionary<String,Int> = ["Tom":12 , "Jerry":18] //var dict2 = ["Tom":12 , "Jerry":18] //字典初始化的類型推斷 print(dict)訪問和修改字典內(nèi)容 ,key類型默認應(yīng)為可空的數(shù)據(jù)n類型 print(dict["Tom"]) //輸出內(nèi)容為 Optional(12) print(dict["jj"]) //輸出內(nèi)容為 nil dict["Tom"] = 66 //修改字典的值 print(dict["Tom"]) dict.updateValue(99, forKey: "Jerry") //使用updateValued方法修改字典中指定鍵的值新建字典元素
//print("新建字典元素") //如字典中key為“Jake”的元素不存在則新建,否則則修改; //測試發(fā)現(xiàn)字典是無序的,插入的字典值不一定在字典的最末,也可能插入到中間 //dict["Jake"] = 25 //print(dict) 刪除字典元素 //print("刪除字典元素:removeValue(forkey: ..)") //dict.removeValue(forKey: "Jake") //print(dict)循環(huán)遍歷字典
//循環(huán)遍歷字典 for (key,value) in dict{print("The name is (key), age is (value)") }//遍歷字典鍵值 for key in dict.keys {print("the dict key is (key)") }//只遍歷字典的值 for value in dict.values {print("the dict value is (value)") }聲明常量字典,不可再進行編輯
let album = ["he":11 , "me":99 , "she":88] print(album.count)把字典轉(zhuǎn)為數(shù)組 Array
var keys = Array(dict.keys) print(keys) //["Tom", "Jerry"] var values = Array(dict.values) print(values) //[12, 18]value為數(shù)組的字典
//創(chuàng)建一個字典用于存儲程序開發(fā)需要語言,如 key為ios,value為 ["Objective-c","Swift"] print("創(chuàng)建一個字典用于存儲程序開發(fā)需要語言") var codeDict = ["ios":["Objective-c","Swift"] , "android":["java","kotlin"]] print(codeDict)總結(jié)
以上是生活随笔為你收集整理的2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb详细优化策略方案
- 下一篇: C宏定义注意事项