Swift學(xué)習(xí)筆記一

1.可選類型Optional

  • ? 可以為 nil 翠订, 峰伙!不能為nil
  • 強(qiáng)制解析 myString波桩! (訪問myString)
  • 自動(dòng)解析 var myString:String!
  • 可選綁定 var myString:String?

循環(huán)

  • while
  • repeat { }while
  • continue語句:停止本次循環(huán) 開始下次循環(huán)
  • break :會(huì)立刻結(jié)束整個(gè)控制流的執(zhí)行
  • fallthrough:如果在case執(zhí)行完后,繼續(xù)執(zhí)行下面的case剔交,需要使用fallthrough(貫穿)關(guān)鍵字冕香。

字符串

  1. 字符串字面量

     var stringA = "Hello"
    
  2. String 實(shí)例化

     var stringB = String("Swift!");
    
  3. stringA.isEmpty (判斷是否為空)

  4. Siwft4.0 修改:String成Collection類型

     let greeting = "Hello Mars"
     print(greeting.count)
     greeting.forEach{print($0)}
    

字符 Character

  1. 不能創(chuàng)建空的 Character

  2. 字符串連接字符

     let charB: Character = "B"
     var str:String = "Hello"
     str.append(charB)
    

數(shù)組

  1. 創(chuàng)建:

     var arry1: Array<Int> = Array<Int>()
    
     var someInts = [Int](repeating: 0, count: 3)
    
     var somebInts:[Int] = [10, 20, 30]
    
  2. 訪問數(shù)組:

         //1
         var someVar = somebInts[0]
         //2
         Array(somebInts[0..<2]) 
    
  3. 修改

     arrInts[2] = 50
    
  4. 刪除

     //1
     arrInts.remove(at: 2)
     //2
     arrInts.removeLast()
    
  5. 遍歷數(shù)組

     //1
     for (index, item) in arrInts.enumerated() {
         print("\(index),\(item)")
     }
     //2.
     arrInts.forEach {print($0)}
     //3. for-in
    
  6. 合并數(shù)組

      var ints = somebInts + arrInts
    
  7. count 贾漏、 isEmpty

字典

  1. 創(chuàng)建

     //1
     var dict = [Int: String]() //key為int value為String
     //2
     var dic:[Int: String] = [1:"One", 2:"Two", 3:"Three"]
    
  2. 訪問 dic[key]

  3. 修改字典

     //1.updateValue
     var oldVal = dic.updateValue("One 的新值", forKey:1)
     var dd = dic[1]
      //2.通過key來修改
     dic[1] = "最新 One值"
     print(String(describing:dic[1]))
    
  4. 移除key-value對(duì)

     //1.removeValue
     var removedValue = dic.removeValue(forKey: 2)
     //2.
     dic[2] = nil
    
  5. 遍歷字典

    //1. for-in
    //2. enumerate
    
  6. 字典轉(zhuǎn)數(shù)組

     let dictkeys = [Int](someDict.keys)
     let dictValues = [String](someDict.values)
    
  7. count , isEmpty

函數(shù)

  1. 常量,變量及I/O參數(shù)
  • 如果想要聲明一個(gè)變量參數(shù)萤皂,可以在參數(shù)定義前加 inout 關(guān)鍵字葫督,這樣就可以改變這個(gè)參數(shù)的值了竭鞍。

  • 當(dāng)傳入的參數(shù)作為輸入輸出參數(shù)時(shí),需要在參數(shù)名前加 & 符橄镜,表示這個(gè)值可以被函數(shù)修改偎快。

      func swapTwoInts(_ a: inout Int, _ b: inout Int)    {
      let temporaryA = a
      a = b
      b = temporaryA
      }
      var x = 1
      var y = 5
      swap(&x, &y)
    

2.嵌套函數(shù)

    func qiantaohanshu(fordec total: String) -> (String) -> String {
        func neihanshu (haha: String) -> String{
            return total + haha
        }
        return neihanshu
    }
    let diaoyong = qiantaohanshu(fordec: "天啊")
    diaoyong("好的")
    qiantaohanshu(fordec: "我是")("徐征")
    //打印結(jié)果為 我是徐征

閉包 Closures

  1. 表達(dá)式

     let divide = {(val1: Int, val2: Int) -> Bool in
          return val1 > val2
     }
     let result = divide(20,30)
     print(result)
    
  2. 尾隨閉包:尾隨閉包是一個(gè)書寫在函數(shù)括號(hào)之后的閉包表達(dá)式,函數(shù)支持將其作為最后一個(gè)參數(shù)調(diào)用

  3. 閉包是引用類型:這也意味著如果您將閉包賦值給了兩個(gè)不同的常量/變量洽胶,兩個(gè)值都會(huì)指向同一個(gè)閉包:

集合 Set

    var vowel: Set<Character> = ["a", "e", "i", "o", "u"]
    vowel.count
    vowel.isEmpty

    vowel.contains("a")
    type(of: vowel.remove("a"))
    vowel.insert("a")
    //vowel.removeAll()

    for character in vowel.sorted() {
        print(character)
    }
    //
    vowel.forEach{print($0)}

結(jié)構(gòu)體 struct 枚舉 enum

  • 都是值類型

類 Class

  • 引用類型
  • 恒等運(yùn)算符 ===:如果兩個(gè)常量或者變量引用同一個(gè)類實(shí)例則返回 true
  • 不恒等運(yùn)算符 !== 如果兩個(gè)常量或者變量引用不同一個(gè)類實(shí)例則返回 true

屬性

  1. 延遲存儲(chǔ)屬性 lazy :

    ('var' 關(guān)鍵字是必須的)

     class samples {
         lazy var no = number() //'var' 關(guān)鍵字是必須的
     }
    
     class number {
         var name =  "是小鳥"
     }
     var firstSample = samples()
     print(firstSample.no.name)
    
  2. 計(jì)算屬性 getter setter

  3. 只讀計(jì)算屬性 getter

  4. 屬性觀察值: 可以為除了延遲存儲(chǔ)屬性之外的其他存儲(chǔ)屬性添加屬性觀察器晒夹,也可以通過重載屬性的方式為繼承的屬性(包括存儲(chǔ)屬性和計(jì)算屬性)添加屬性觀察器。

    注意: 不需要為無法重載的計(jì)算屬性添加屬性觀察器姊氓,因?yàn)榭梢酝ㄟ^ setter 直接監(jiān)控和響應(yīng)值的變化丐怯。

     //willSet 在設(shè)置新的值之前調(diào)用
     //didSet 在新的值被設(shè)置之后立即調(diào)用
     //willSet和didSet觀察器在屬性初始化過程中不會(huì)被調(diào)用
     
     class Samplepgm {
         var counter: Int = 0 {
             willSet(newTotal) {
                 print("計(jì)數(shù)器:\(newTotal)")
             }
             didSet {
                 if counter > oldValue {
                     print("新增數(shù)\(counter - oldValue)")
                 }
             }
         }
         
     }
    
     let NewCounter = Samplepgm()
     NewCounter.counter = 100
     NewCounter.counter = 800
    
  5. 類型屬性:類型屬性是作為類型定義的一部分寫在類型最外層的花括號(hào)({})內(nèi)。

    使用關(guān)鍵字 static 來定義值類型的類型屬性翔横,關(guān)鍵字 class 來為類定義類型屬性读跷。

     //static
     struct StructName {
         static var storedTypeProperty = " "
         static var computedTypeProperty: Int {
             //這里返回 一個(gè) Int 值
             return 30
         }
     }
     //class
     class ClassNames {
         class var computedTypeProperty: Int {
             //這里返回一個(gè) Int 值
             return 27
         }
     }
    
  • 類似于實(shí)例的屬性,類型屬性的訪問也是通過點(diǎn)運(yùn)算符(.)來進(jìn)行禾唁。但是效览,類型屬性是通過類型本身來獲取和設(shè)置无切,而不是通過實(shí)例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丐枉,隨后出現(xiàn)的幾起案子哆键,更是在濱河造成了極大的恐慌,老刑警劉巖矛洞,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洼哎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沼本,警方通過查閱死者的電腦和手機(jī)噩峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抽兆,“玉大人识补,你說我怎么就攤上這事”韬欤” “怎么了凭涂?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)贴妻。 經(jīng)常有香客問我切油,道長(zhǎng),這世上最難降的妖魔是什么名惩? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任澎胡,我火速辦了婚禮,結(jié)果婚禮上娩鹉,老公的妹妹穿的比我還像新娘攻谁。我一直安慰自己,他們只是感情好弯予,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布戚宦。 她就那樣靜靜地躺著,像睡著了一般锈嫩。 火紅的嫁衣襯著肌膚如雪受楼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天呼寸,我揣著相機(jī)與錄音艳汽,去河邊找鬼。 笑死等舔,一個(gè)胖子當(dāng)著我的面吹牛骚灸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慌植,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甚牲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼义郑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丈钙,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤非驮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雏赦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劫笙,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年星岗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了填大。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俏橘,死狀恐怖允华,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寥掐,我是刑警寧澤靴寂,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站召耘,受9級(jí)特大地震影響百炬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜污它,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一剖踊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轨蛤,春花似錦蜜宪、人聲如沸虫埂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掉伏。三九已至缝呕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斧散,已是汗流浹背供常。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸡捐,地道東北人栈暇。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像箍镜,于是被迫代替她去往敵國(guó)和親源祈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煎源,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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

  • 基礎(chǔ)部分(The Basics) 當(dāng)推斷浮點(diǎn)數(shù)的類型時(shí),Swift 總是會(huì)選擇Double而不是Float香缺。 結(jié)合...
    gamper閱讀 1,288評(píng)論 0 7
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,837評(píng)論 0 6
  • Swift 對(duì)空格有要求手销。 Swift數(shù)據(jù)類型 Int 相當(dāng)于NSInteger,根據(jù)不同平臺(tái)有不同的長(zhǎng)度。 無符...
    小小廚師閱讀 650評(píng)論 0 0
  • About me: 在學(xué)習(xí)Swift之前完完全全的零基礎(chǔ)編程图张,不知道變量與常量區(qū)別的那種零基礎(chǔ)锋拖。 教程主要看 ht...
    lightandall閱讀 334評(píng)論 0 1
  • 習(xí)題 1 加分題 1:讓你的腳本再多打印一行 加分題 2:讓你的腳本只打印一行 加分題 3: 在一行的起始位置放一...
    Ziii_fcc5閱讀 2,560評(píng)論 0 2