Swift3.0基本語法01

Swift3.0之基本知識

常量&變量

  • 在Swift中規定:在定義一個標識符時必須明確說明該標識符是一個常量還是變量
  • 使用let來定義常量,定義之后不可以修改
  • 使用var來定義變量,定義之后可以修改

變量的基本使用

    import UIKit
    let a : Int = 10
    // 錯誤寫法,當一個標識符定義為常量時是不可以修改的
    // a = 20
    var b : Int = 20
    //因為b定義為變量,因此是可以修改的
    b = 30

常量和變量的使用注意:

    import UIKit
    /*
     常量使用注意:
        1> 優先使用常量
        2> 常量的本質
     */
    // 1.注意一:在開發中let/var在選擇時優先使用常量,防止不小被修改掉(let)
    // 如果一個標識符不需要修改,但是聲明稱了變量,那么編譯器會報警告
    // 2.常量的本質:
    // 含義:指向的內存地址不可以修改,但是可以通過內存地址,找到對應的對象,之后修改對象內部的屬性
    /*
     OC中創建對象:
        UIView *view = [[UIView alloc] init];
        view = [[UIView alloc] init];
     Swift中創建對象:
        var view : UIView = UIView()
     */
    /*
     變量的做法
        var view : UIView = UIView()
        view = UIView()
     */
    // 創建常量View
    let view = UIView()
    // view = UIView() 錯誤做法
    view.alpha = 0.5
    // Swift中創建結構體:結構體類型()
    view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
    // Swift中調用方法,統一使用點語法
    view.backgroundColor = UIColor.red

創建對象補充

  • 創建UIView對象,并且在UIView中添加UIButton
    import UIKit
    // 1.創建UIView對象
    // OC : [[UIView alloc] initWithFrame:CGRect]
    let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100)
    let view : UIView = UIView(frame: viewRect)
    // 2.設置UIView的屬性
    view.backgroundColor = UIColor.orange
    // 3.創建UIButton
    let btn : UIButton = UIButton(type: .custom)
    // 4.設置UIButton的屬性
    btn.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    btn.backgroundColor = UIColor.purple
    /*
     Swift中枚舉類型:
     1> 如果可以根據上下文推導出類型可以直接.具體的類型
     2> 如果根據上下文推導不出具體的類型,則需要:類型.具體的類型
     */
    btn.setTitle("按鈕", for: .normal)
    btn.setTitleColor(UIColor.white, for: .normal)
    // 5.將btn添加到UIView中
    view.addSubview(btn)

Swift中數據類型

Swift類型的介紹

  • Swift中的數據類型也有:整型/浮點型/對象類型/結構體類型等等
    • 先了解整型和浮點型
    • 整型
      • 有符號
        • Int8 : 有符號8位整型
        • Int16 : 有符號16位整型
        • Int32 : 有符號32位整型
        • Int64 : 有符號64位整型
        • Int : 和平臺相關(默認,相當于OC的NSInteger)
      • 無符號
        • UInt8 : 無符號8位整型
        • UInt16 : 無符號16位整型
        • UInt32 : 無符號32位整型
        • UInt64 : 無符號64位整型
        • UInt : 和平臺相關(常用,相當于OC的NSUInteger)(默認)
    • 浮點型
      • Float : 32位浮點型
      • Double : 64浮點型(默認)
    // 定義一個Int類型的變量m,并且賦值為10
    var m : Int = 10
    // 定義一個Double類型的常量n,并且賦值為3.14
    let n : Double = 3.14

Swift中的類型推導

  • Swift是強類型的語言
    • Swift中任何一個標識符都有明確的類型
    • 注意:
      • 如果定義一個標識符時有直接進行賦值,那么標識符后面的類型可以省略.
      • 因為Swift有類型推導,會自動根據后面的賦值來決定前面的標識符的數據類型
      • 可以通過option+鼠標左鍵來查看變量的數據類型
    import UIKit
    let m = 20
    let n = 30.5
    // 錯誤寫法 :
    // Swift中沒有隱式轉化,不會自動將一個Int類型轉成Double類型,因此不同類型之間不能進行運算
    // let result = m + n
    // 正確做法
    // 1> 將Int類型轉成Double : Double(標識符)
    // 2> 將Double類型轉成Int : Int(標識符)
    let result1 = Double(m) + n
    let result2 = m + Int(n)

邏輯分支

一. 分支的介紹

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

二. if分支語句

  • 和OC中if語句有一定的區別
    • 判斷句可以不加()
    • 在Swift的判斷句中必須有明確的真假
      • 不再有非0即真
      • 必須有明確的Bool值
      • Bool有兩個取值:false/true
    // 演練一:
    let a = 10
    // 錯誤寫法:
    //if a {
    //    print("a")
    //}
    // 正確寫法
    if a > 9 {
        print(a)
    }
    // 演練二:
    let score = 87
    if score < 60 {
        print("不及格")
    } else if score <= 70 {
        print("及格")
    } else if score <= 80 {
        print("良好")
    } else if score <= 90 {
        print("優秀")
    } else {
        print("完美")
    }

三.guard的使用

  • guard是Swift2.0新增的語法
    • 它與if語句非常類似,它設計的目的是提高程序的可讀性
    • guard語句必須帶有else語句,它的語法如下:
      • 當條件表達式為true時候跳過else語句中的內容,執行語句組內容
      • 條件表達式為false時候執行else語句中的內容,跳轉語句一般是return、break、continue和throw
    guard 條件表達式 else {
        // 條換語句
        break
    }
    語句組
    //---例子---
        var age = 18
    func online(age : Int) -> Void {
        guard age >= 18 else {
            print("回家去")
            return
        }
        print("可以上網")
    }
    online(age)

四.switch分支

switch的介紹
  • Switch作為選擇結構中必不可少的語句也被加入到了Swift中
    • 只要有過編程經驗的人對Switch語句都不會感到陌生
    • 但蘋果對Switch進行了大大的增強,使其擁有其他語言中沒有的特性
switch的簡單使用
  • 基本用法和OC用法一致
    • 不同之處:
      • switch后可以不跟()
      • case后可以不跟break(默認會有break)
    • 例子:
    let sex = 0
    switch sex {
    case 0 :
        print("男")
    case 1 :
        print("女")
    default :
        print("其他")
    }
  • 簡單使用補充:
    • 一個case判斷中,可以判斷多個值
    • 多個值以,隔開
    let sex = 0
    switch sex {
    case 0, 1:
        print("正常人")
    default:
        print("其他")
    }
  • 簡單使用補充:
    • 如果希望出現之前的case穿透,則可以使用關鍵字fallthrough
    let sex = 0
    switch sex {
    case 0:
        fallthrough
    case 1:
        print("正常人")
    default:
        print("其他")
    }
switch支持區間判斷
  • 什么是區間?
    • 通常我們指的是數字區間:010,100200
      swift中的區間常見有兩種
    • 半開半閉區間:0..<10 表示:0~9,不包括10
      閉區間:0…10 表示:0~10
    let score = 88
    switch score {
    case 0..<60:
        print("不及格")
    case 60..<80:
        print("幾個")
    case 80..<90:
        print("良好")
    case 90..<100:
        print("優秀")
    default:
        print("滿分")
    }

循環使用

循環的介紹

  • 在開發中經常會需要循環
  • 常見的循環有:for/while/do while.
  • 這里我們只介紹for/while,因為for/while最常見

for循環的寫法

  • 區間for循環
    for i in 0..<10 {
        print(i)
    }
    for i in 0...10 {
        print(i)
    }
    //特殊寫法:如果在for循環中不需要用到下標i
    for _ in 0..<10 {
    print("hello")
    }

Swift中遍歷方法for in 和 forEach的區別

while和do while循環

  • while循環
    • while的判斷句必須有正確的真假,沒有非0即真
    • while后面的()可以省略
    var a = 0
    while a < 10 {
        a++
    }
    
    //--do while循環:使用repeat關鍵字來代替了do--
        let b = 0
    repeat {
        print(b)
        b++
    } while b < 20

更多關于Swift

Swift基本語法02--基本數據類型

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容