日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法

發(fā)布時間:2023/12/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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ù)

  • 整數(shù): Int 64位
  • 浮點數(shù):Float 32位,Double 64位
  • 整數(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 由特定的條件邏輯執(zhí)行代碼,通常要處理一個非此即彼的狀況 ```swift let age = 18 if age > 18{print("成年人") }else {print("未成年人") }

    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語句特性

  • 每個case分支后不需要break
  • swift語句中 default分支不是必需的
  • fallthrough 狀態(tài)轉(zhuǎn)移語句,會先執(zhí)行自己分支代碼后,再把控制權(quán)轉(zhuǎn)移到下面緊挨著的分支
  • case 匹配值 支持區(qū)間 如 case 1…100 表示 1到100的區(qū)間內(nèi)
  • case 匹配值可支持 多個
  • case 匹配值可使用where條件子句
  • 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 <= 3

    break和continue的區(qū)別

  • break終結(jié)當(dāng)前所處層的的循環(huán)
  • continue終結(jié)當(dāng)前這一次循環(huán)
    ```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)
    }

    ## 字符串 ```swift var str = "Hello, playground" //聲明字符串變量 let str1 = "Hello" var str2 : String = "HELLO 2" str2.append(" swift") //累加str += "!" //給可變字符串添加 print(str) print(str.count) //獲取字符串的長度 print(str.contains(str1)) print(str.starts(with: str1)) //print(st) print(str2)

    可空類型 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) }

    隱式展開可空實例

  • 隱式展開可空實例的類型用 !聲明,相比普通可空類型它不需要展開
  • 表示要比普通可空類型更有信心
  • 但存在著危險性:如果可空實例沒有值訪問其值會導(dǎo)致運行時錯誤var erroCodeInfo:String! erroCodeInfo = "no data" print("erroCodeInfo info is (erroCodeInfo)")
  • 可空鏈?zhǔn)秸{(diào)用

  • 可空鏈?zhǔn)秸{(diào)用運算符 ?.
  • 與可空綁定類似,可空鏈?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合并運算符

  • nil合并運算符 ??
  • 從可空實例中獲取值,或者使用默認值//要么獲取值,要么默認值 let des = erroInfo ?? "no data" print(des)
  • 數(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 使用鍵值對(key-value pair)組織其內(nèi)容
  • 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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。