Swift - 初級入門

1.簡介

  • 聲明變量:var value = variableValue

      var x = 12  //Int
      var y = 89.7  //Double
      var c = "a"  //字符
      var str = "Hello,world!"  //字符串
      var a : Double = 9 // a=>9.0 顯示聲明
      var b : Int? = 89  //可選Int 可能為Int,可為nil
      var f : Float! = 199.9 //確定Float類型
    
  • 聲明常量:let constant = constantValue
    • 聲明方式和變量一樣,聲明以后常量數值不能改變
  • 類型轉換:

      var x : Int
      var y : Double = 899.89
      x = Int(y)//899
    
    • var x = 128
      var s = String(x)  //強制轉換為字符串
      
  • 數值表示:
    • 二進制:
      let binarySystem = 0b1100111 //二進制0b
    • 八進制:
      let octalSystem = 0o73102 // 八進制0o
    • 十六進制:
      let heaxadecimalSystem = 0xA6B123 //十六進制0x
    • 科學計數法:
      let scientificNotation = 4.34e-10 //科學計數法
    • 分割顯示:
      let bigNumber = 500_000_000 //較大數值支持 _ 分割顯示
  • 布爾類型:
    • 聲明:
      var isTrue : Bool = 100 > 50
      isTrue = true
      isTrue = false
  • 字符串:
    • 聲明:
      var str : String = "" //輸出空白
      var str : String //錯誤的
      var str : String? //正確的
    • 拼接:
      var strC = strA + strB + "一氣化三清"
    • 比較兩個字符傳是否相等:
      var isStringSame = strA == strB //結果是Bool類型
  • 使用類型別名typealias:
    typealias DoubleV = Double
    var a : DoubleV = 88.9
  • 元組(Tuple):由一個或多個變量、常量或字面量[等號左邊的數值]組成的單個實體
    • 聲明:
      var myDreamCar = (2016,"Audi","A8") //如果訪問不存在的元組成員則顯示錯誤信息。一旦聲明后不能再次更改成員的個數或者類型。
    • 訪問成員:
      myDreamCar.0 = 2017
  • 可選類型 在聲明的類型后面加 ? 就是可選類型,任何類型都可以聲明為可選的。
    • 為什么要有可選類型?舉個例子:
      let chooseTypeStr : String = "abc" //聲明一個常量字符串為"abc"
      var chooseTypeInt : Int ? = Int(chooseTypeStr) //很明顯,此時chooseTypeStr中的"abc"不能被強制轉換為相應的Int數值。那么如果不加 ? 就會出現錯誤。加上 ? 后,chooseTypeInt就可以為nil,這樣就不會報錯。
      print(chooseTypeInt) //輸出為nil

2.集合

  • 數組:數組中的元素必須相同

    • 常量數組:
      let array = ["張三","李四","王五"]
      array[0] = "張老三" //錯誤的 let 為常量不可以修改
    • 變量數組:
      var array = ["張三","李四","王五"]
      array[0] = "張老三" //var 可修改元素
      array = ["張三","李四","王五","趙六"] //var 可修改長度
    • 顯示聲明:
      var array : [String] = ["上單","打野","中單","輔助","ADC"] //要聲明用于存儲特定類型值的數組 需要在數組名后面加上冒號 在架上放在方括號 [] 的類型名
    • 增長數組:
      array.append("最佳第六人") //在數組尾部添加元素
      array3 = array1 + array2 + ["弟弟","哥哥"] //順序是先加 = 左邊的 然后 右邊的
    • 替換 和 刪除:
      var array : [String] = ["AA","BB","CC","DD","EE","FF"]
      替換:array[3] = "GG"
      刪除最后一個元素:
      array.removeLast()
      刪除第一個元素:
      array.removeFirst()
      刪除指定下標元素:
      array.removeAtIndex(3)
      刪除尾部幾個元素:
      array.removeLast(2)
      刪除首部幾個元素:
      array.removeFirst(2)
      刪除全部元素:
      array.removeAll() //array = [] 也可以
      插入到指定位置:
      array.insert("ZZ",atIndex:0) //插入到原數組的0元素之前
      二維數組:
      var array = [array1,array2,array3]
    • 空數組:需要指定存儲元素的類型。
      var array : Array<Int> = []
      var array = [ Int ] ( )
  • 字典:采用健值對來存儲數據,字典條目的排列順序取決于使用Xcode的版本,總是采用可最大限度提高檢索和訪問效率來排列的。

    • 聲明:
      var dictionary = ["low":1_000,"middle":5_000,"high":10_000]
      var dictionary : [String : Int] = ["low":1_000,"middle":5_000,"high":10_000]
    • 查找條目:
      var element = dictionary["middle"] //element 的類型為可選類型 ? 因為訪問的key不一定存在,不存在時放回nil。從字典返回的值總是可選的,但不能將字典條目設置為nil。
    • 添加條目:
      dictionary["long"] = 200_000
    • 更新條目:
      dictionary["high"] = 90_000
    • 刪除條目:
      dictionary["low"] = nil //這里也可以解釋為什么不能將字典的條目設置為nil。
      dicitionary.removeValueForKey("high") //等同上面
    • 清空字典:
      dictionary.removeAll()
      dictionary = [ : ]
      dictionary.removeAll(keepCapacity:Bool) //清空字典,是否保留空間。
    • 創建空字典:
      var emptyDictionary = Dictionary<String,Double>() //需要說明字典的健值對的類型
    • 字典中的字典:
      var dictionary = ["d1":dictionary1,"d2":dictionary2,"d3":dictionary3]
  • 數組與字典:

    • 由字典組成的數組:
      array = [dictionary1,dictionary2,dictionary3]

    • 由數組組成的字典:
      dictionary = ["One":dictionary1,"Two":dictionary2,"Three":dictionary3]

    • 迭代:
      for value in array {
      print("value = (value)")
      } //數組

      for (key : value) in dictionary {
      print(key," = ",value)
      }  //字典
      

3.流程控制

  • for循環:

    • swift:
      var loopCounter : Int = 0
      for loopCounter in 1...10 { //閉區間
      print("value = ",loopCounter)
      }
    • 老式for循環:
      for loopCounter = 0; loopCounter < 6; loopCounter +=1 {
      print("value at index (loopCounter) is (array[loopCounter])")
      }
  • if語句:

    • 用于判斷:
      if a == b { //可使用 ==,!=,<,>,<=,>=
      print("a等于b")
      } else {
      print("a不等于b")
      }
  • switch語句:

    • 使用switch語句必須加上default。在swift的switch中執行一個case之后,自動break。
      switch tree { //tree 是 String
      case "楊樹" :
      var str : String = "風兒吹" //在這里聲明新的變量,不需要加 { } 花括號
      print("")
      case "松樹" :
      print("")
      case "柳樹" "榕樹" : //多個
      print("")
      case 2...10 :
      print("也可以使用區間") //可以使用 ...
      default :
      print("")
  • while語句:

    • while:
      var base = 2
      var target = 1_000
      var value = 0
      while value < target {
      value += base
      print(value)
      }

    • repeat - while: =>do - while
      repeat {
      value -= base
      }while value > 0

4.函數

  • 格式:func name (parameters) -> return type
    func funcName(parameterName : Double) -> Double { //被調用時,一個函數的返回值可以被忽略
    var result : Double
    result = (((parameterName - 22) * 5) / 9)
    return result
    }
    func funcSecond() {
    print("無參數,無返回值")
    }
    func canChangeParameter(str : String,values : Double...) { //可變參數 只允許在函數的最后一個參數中包涵省略號,指出它是一個可變參數,其他參數都只能引用單個量
    var add : Double = 0.0
    for value in values { //我的理解是傳進來可變參數是數組
    add += value
    }
    //調用函數
    var testValue = 88.2
    var testResult = funcName(testValue)

    canChangeParameter("可變參數",values:12.3,44,3,879.65)
    
  • 返回函數的函數:
    //函數1
    func funcNumberOne (value : Double ) -> Double {
    return value + 100.0
    }
    //函數2
    func funcNumberTwo (value : Double ) -> Double {
    return value + 200.0
    }
    //返回函數的函數
    func funcAll (str : Double) -> (Double) -> Double {
    if str == "One" {
    return funcNumberOne
    }
    return funcNumberTwo
    }
    //調用
    let useFuncOne = funcAll("One") //也可以是變量var
    let useFuncTwo = funcAll("Two")

      let doubleOne = useFuncOne(34.2)
      let doubleTwo = useFuncTwo(55.8)
    
      print(doubleOne)  //輸出134.2
      print(doubleTwo)  //輸出255.8
    

有誤之處,敬請指正,不勝感激

by JokerVxc

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

推薦閱讀更多精彩內容