Swift基礎(chǔ)_01數(shù)據(jù)類型和邏輯分支

內(nèi)容總結(jié)

Swift中的數(shù)據(jù)類型

  • 整形和浮點型
  • 類型推導(dǎo)
  • 簡單運算

Swift中的邏輯分支

  • if分支
  • guard
  • switch分支
    • switch介紹及基本使用
    • switch的語法補充
      • switch判斷浮點類型
      • switch判斷字符串類型
      • switch判斷區(qū)間類型

Swift中的數(shù)據(jù)類型

  • Swift中的數(shù)據(jù)類型也有:整形、浮點型、對象類型、結(jié)構(gòu)體類型等等

  • 先學(xué)習(xí)整形和浮點型

    • 整形
      • 有符號
        • Int8:有符號8位整形
        • Int16:有符號16位整形
        • Int32:有符號32位整形
        • Int64:有符號64位整形
        • Int:和平臺相關(guān)(默認Int類型,相當(dāng)于OC的NSInteger)
      • 無符號
        • UInt8:無符號8位整形
        • UInt16:無符號16位整形
        • UInt32:無符號32位整形
        • UInt64:無符號64位整形
        • UInt:和平臺相關(guān)(常用,相當(dāng)于OC的NSUInteger)(默認)
    • 浮點型
      Float :32位浮點型
      Double:64位浮點型
  • 類型推導(dǎo)

    • 如果在定義一個標識符的時候,有直接給該標識符進行賦值,那么可以將標識符后面的類型省略
    • 編譯器會根據(jù)我們后面的賦值的類型,推導(dǎo)出前面標識符的類型,這個過程叫類型推導(dǎo)
    • 并且可以通過 option + 鼠標左鍵來查看標識符的類型
//利用類型推導(dǎo)省略 標識符:數(shù)據(jù)類型 示例 并且Xcde編譯器在你聲明標識符的時候的推薦的也是省略數(shù)據(jù)類型
let a = 24
var b = 2.44
let view = UIView()
let btn = UIButton()
  • Swift中的基本運算

    • 在Swift中進行基本運算的時候必須保證類型一致,否則會報錯
    • 因為Swift中沒有隱式轉(zhuǎn)換
    • 數(shù)據(jù)類型的轉(zhuǎn)化
      • Int類型轉(zhuǎn)成Double類型:Double(標識符)
      • Double類型轉(zhuǎn)成Int類型:Int(標識符)
let i = 20        //整形
let d = 15.2    //Double類型

//let p = m + n 錯誤寫法 會報錯
//必須進行類型轉(zhuǎn)換 讓運算標識符的類型一直
let dp = Double(i) + d // 35.2
let ip = i + Int(d)    // 25

Swift是強類型語言

  • 注意:即使同為浮點型,如果一個是Double 一個是CGFloat一樣也不能直接運算

let d2 :Double = 2.55
let f :CGFloat = 3.22

//let resalt = d2 + f 錯誤寫法 會報錯

//正確寫法
let resault = d2 + Double(f)

邏輯分支

  • 邏輯分支的介紹

    • 分支 if / switch / 三目運算符等判斷語句
    • 通過分支語句可以控制程序的執(zhí)行流程
  • if分支語句

    • 和OC中的if語句有一定的區(qū)別
    • 判斷語句可以不加()
    • 在Swift的判斷語句中必須有明確的真假
      • 不再有非0(nil)即真 Bool(false/true)
      • 必須有明確的Bool值
      • Bool有兩個取值:false/true
 if的用法 OC的中的用法
 if(a>0){
 
 }
 if(a){//非0 即真 只要a 不是0或者空都能來到這個判斷
 
 }
  • if 和else if 在Swift中的基本用法

let num = 1
if num > 0 { //可省略條件后面的() ,并且條件要明確
    print("a 大于0")
}else if num == 0 {
    print("a =0")
}else {
    print("a 小于 0")
}

if a != 0 {
    print("a 不等于0")
}
  • guard的使用

    • guard是Swift2.0新增的語法
    • 它與if語句非常像似,它設(shè)計的初衷是提高代碼的可讀性
    • guard必須要帶有else語句,語法如下
      • 當(dāng)條件表達式為true的時候跳過else語句的內(nèi)容,執(zhí)行語句組(下面的)內(nèi)容
      • 條件表達式為false的時候執(zhí)行else語句中的內(nèi)容,跳轉(zhuǎn)語句一般是 return break continue throw
        語法
guard 條件表達式 else {
 
 
     break
 }
 
 語句組
例子 多重條件判斷一個人能不能上網(wǎng)
let age = 20
let haveIdCard = true
let haveMoney = true
func canOnline (age:Int) {
    if age > 18 {
        if haveIdCard {
            if haveMoney {
                print("可以上網(wǎng)")
            }else{
               print("取錢")
            }
        }else{
            print("拿身份證")
        }
    }else{
        print("不能上網(wǎng)")
    }
}

canOnline(age: age)
可以看出多重判斷之后 該函數(shù)看起來很復(fù)雜 代碼閱讀性變差
改成 guard
func guardCanOnline (age:Int) {
    
    guard age>=18 else {
        print("不可以上網(wǎng)")
        return
    }
    guard haveIdCard else {
        print("回家拿身份證")
        return
    }
    guard haveMoney else {
        print("沒錢上什么網(wǎng)")
        return
    }
    print("開心上網(wǎng)吧")
    
}
對比上例 實現(xiàn)一樣的需求 這樣這個判斷上網(wǎng)的函數(shù)是不是看起來清爽很多呢?

switch分支

  • switch的介紹
    • switch作為選擇結(jié)構(gòu)中必不可少的語句在Swift中地位也很重要
    • 但是蘋果對switch進行了大大的加強,使其擁有其他語言中沒有的特性
      • switch的簡單使用
      • 和OC的區(qū)別
        • switch后面的()可以省略
        • case語句結(jié)束時可以不加break也不會產(chǎn)生case穿透
  • switch的基本使用
    • switch()可以省略
    • case結(jié)束可以不break
  • 基本使用補充
    • case后面可以加多個條件
    • 如果希望產(chǎn)生case穿透,可以在case結(jié)束時加上fallhrough
    • 可以判斷多種類型
      • 浮點型
      • 字符串類型
      • 區(qū)間類型

代碼示例 基本使用

//sex 代表性別 0 男 1 女
let sex = 0

switch sex {
case 0:
    print("boy")
case 1:
    print("girl")
default:
    print("人妖啊")
}
  • switch基本語法的補充
    • 在Swift中,switch后面case可以判斷多個條件
    • 如果希望case結(jié)束的時候可以產(chǎn)生case穿透,可以在case結(jié)束后加上fallthrough
switch sex {
case 0,1:
    print("正常人")
    fallthrough
default:
    print("人妖啊")
}

switch判斷其他類型

  • 判斷浮點類型
let pai = 3.14

switch pai {
case 3.14:
    print("與π相等")
default:
    print("與π不相等")
}
  • 判斷字符串
let num1 = 20
let num2 = 30

let oprationStr = "+"


switch oprationStr {
case "+":
    print(num1+num2)
case "-":
    print(num1-num2)
case "*":
    print(num1*num2)
case "/":
    print(num1/num2)
default:
    print("非法的操作符")
}
  • 判斷區(qū)間
    • 區(qū)間
      • 半開區(qū)間 0~9 0..<10
      • 閉區(qū)間 0~9 0...9
let score = 90

switch score {
case 0..<60:
    print("不及格")
case 60..<80:
    print("及格")
case 80..<90:
    print("良好")
case 90...100:
    print("優(yōu)秀")
    
default:
    print("不合理的成績")
}

while和do while循環(huán)

  • OC中的的while循環(huán)
 int a = 0 
while (a>0) {
a++;
}
while(a) {

}
  • Swift中
    • while后面可以省略()
    • 沒有非0即真的說法 與前面提到的一樣Bool(true/false)
var m = 0
while m <10 {
        m+=1  //Swift3.0中沒有了 i++ 這種語法
        print(m)
}
//Swift中沒有了do while 語法  改成了 repeat while
repeat {
       m-=1
      print(m)
}while m > 0


后續(xù)

給能看到文章最后的你一個贊,肯定了樂于學(xué)習(xí)的你。愿我們在學(xué)習(xí)的路上一去不復(fù)還

聯(lián)系我,點贊也行吐槽也迎

郵箱 ichenwanbing@163.com

QQ 351795515

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容