Swift基礎類型

來源:互聯網
上載者:User

標籤:

1、使用 let 來聲明常量,使用 var 來聲明變數。

註:你能夠在一行中聲明多個常量或者多個變數。用逗號隔開。

2、類型標註假設初始值沒有提供足夠的資訊(或者沒有初始值),那你須要在變數後面宣告類型,用冒號切割。
let variable: String 注意:一般來說你非常少須要寫類型標註。

假設你在聲明常量或者變數的時候賦了一個初始值,Swift能夠判斷出這個常量或者變數的類型。


3、輸出函數println 和 printprintln:是一個用來輸出的全域函數,輸出的內容會在最後換行。print:唯一差別是在輸出內容最後不會換行。
4、把值轉換成字串有一種更簡單的把值轉換成字串的方法:把值寫到括弧裡,而且在括弧之前寫一個反斜線。
let apples = 3 let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit." 

5、凝視單行凝視://多行凝視:/*  */
6、浮點數Double:表示64位浮點數。

當你須要儲存非常大或者非常高精度的浮點數時請使用此類型。Float:表示32位浮點數。精度要求不高的話能夠使用此類型。
7、類型別名資料型別別名(type aliases)就是給現有類型定義還有一個名字。你能夠使用 typealias keyword來定義類型別名。
比如:當你想要給現有類型起一個更有意義的名字時,類型別名很實用。如果你正在處理特定長度的外部資源的資料:typealias AudioSample = UInt16
var minFound = AudioSample.min
var maxFound = AudioSample.max

8、建立元組 tuples元組(tuples)把多個值組合成一個複合值。元組內的值能夠使隨意類型,並不要求是同樣類型。
比如:let http404Error = (404, "Not Found")
9、元組內容的分解能夠將一個元組分解成單獨的常量和變數使用。

let (statusCode, statusStr) = http404Error
假設你僅僅須要一部分元組值,分解的時候能夠把要忽略的部分用底線(_)標記。
let (justTheStatusCode, _) = http404Error

你還能夠通過下標來訪問元組中的單個元素,下標從零開始。var code = http404Error.0var msg = http404Error.1
10、可選值 optionals 的強制解析一個可選的 Int 被寫作 Int?而不是 Int,它表示這個整形變數可能有值,或者可能為nil(沒值)。

你能夠使用 if 語句來推斷一個可選是否包括值。假設可選有值,結果是 true;假設沒有值,結果是 false。
可選值的強制解析:當你知道可選確實包括值後,則能夠在可選的名字後面加上一個驚嘆號(!)來擷取值。



11、nil這個表示沒有值的意思。假設你聲明一個可選常量或者變數可是沒有賦值,它們會自己主動被設定為 nil:
var surveyAnswer: String?



注意:nil 不能用於非可選的常量和變數。假設你的代碼中有常量或者變數須要處理值缺失的情況,請把它們聲明成相應的可選類型。

12、 隱式解析可選有時候在程式架構中,第一次被賦值之後,能夠確定一個可選總會有值。在這樣的情況下,每次都要推斷和解析可選值是很低效的,由於能夠確定它總會有值。
這時我們就能夠使用隱式解析可選。僅僅須要把後面的 ? 改成 ! 就可以。
13、隱式可選和可選的取值差別let possibleString: String?

= "An optional string."
println(possibleString!) // 須要驚歎號來擷取值

let assumedString: String! = "An implicitly unwrapped optional string."
println(assumedString) // 不須要驚嘆號
注意:假設一個變數之後可能變成 nil 的話請不要使用隱式解析可選。假設你須要在變數的 生命週期中推斷是否是 nil 的話,請使用普通可選類型。

14、斷言有時候假設缺少某些條件。我們不想讓代碼繼續運行下去,就能夠使用斷言(assertion)。斷言會推斷一個邏輯條件是否為true,假設是true則執行下去。否則就中止執行。使用assert函數來寫斷言。比如:let age = -3
assert(age >= 0, "a person‘s age can not less than 0”)
由於age >= 0 為false, 則斷言觸發,中止執行。


15、何時使用斷言- 整數的附屬指令碼索引被傳入一個自己定義附屬指令碼實現,可是下標索引值可能太小或者太大。


- 須要給函數傳入一個值,可是非法的值可能導致函數不能正常運行。

- 一個可選值如今是nil,可是後面的代碼執行須要一個非 nil 值。
注意:斷言可能導致你的應用終止執行,所以你應當細緻設計你的代碼來讓非法條件不會出現。然而,在你的應用公布之前,有時候非法條件可能出現,這時使用斷言能夠高速發現問題。

16、建立數組和字典使用方括弧[ ]來建立數組和字典,並使用下標或者鍵(key)來訪問元素。
var shoppingList = [" catfish", "water", " tulips", "blue paint"]

var occupations = [     "Malcolm": "Captain",
     "Kaylee": "Mechanic",]

17、建立空數組和字典假設類型資訊能夠被判斷出來,你能夠用[]和[:]來建立空數組和空字典——就像你聲明變數或者給函數傳參數的時候一樣。


18、負數求餘在對負數 -b 求餘時, -b的符號會被忽略. 這意味著 a % b 和 a % -b的結果是同樣的.
19、閉區間運算子閉區間運算子 a...b 定義一個包括從 a 到 b (包括 a 和 b)的全部值的區間。
20、半閉區間運算子半閉區間  a..<b 定義一個從  a 到  b 但不包含  b 的區間. 之所以稱為半閉區間,  是由於該區間包含第一個值而不包含最後的值。方便的使用於數組,比如:let names = ["Anna", "Alex", "Brian", "Jack"] let count = names.count for i in 0..<count {     println("第 \(i + 1) 個人叫 \(names[i])") } 
21、字串字面量代碼中包括一段提前定義的字串值作為字串字面量,它能夠包括以下的特殊字元:1.轉義特殊字元 \0 (Null 字元)、\\(反斜線)、\t (水平定位字元)、\n (分行符號)、\r (斷行符號符)、\" (雙引號)、\‘ (單引號)。2.單位元組 Unicode 標量。寫成 \xnn,當中  nn 為兩位十六進位數。3.雙位元組 Unicode 標量,寫成 \unnnn,當中 nnnn 為四位十六進位數。4.四位元組 Unicode 標量,寫成 \Unnnnnnnn,當中 nnnnnnnn 為八位十六進位數。


22、字串空屬性推斷var str = ""str.isEmpty //true
23、 countElements 函數通過調用全域 countElements 函數。並將字串作為參數進行傳遞能夠擷取該字串的字元數量。var str = "andy is a good guy"countElements (str)
24、字串插值插入的字串字面量的每一項都被包裹在以反斜線為首碼的圓括弧裡。let multiplier = 3 let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
25、字串比較Swift 提供了三種方式來比較字串的值:字串相等,首碼相等和尾碼相等。(1)字串相等:即使用 == 來比較字串(2)首碼/尾碼相等:通過調用字串的 hasPrefix/hasSuffix 方法來檢查字串是否擁有特定首碼/尾碼。它會返回一個Boolean值。


26、字串大寫和小寫您能夠通過字串的  uppercaseString 和 lowercaseString  屬性來訪問一個字串的大寫/小寫版本號碼。
27、數組的類型標註Swift 數組應該遵循像Array<SomeType>這種形式。當中sometype是這個數組中唯一同意存在的資料類型。 我們也能夠使用像SomeType[]這種簡單文法(推薦)。
假設我們建立了一個String 值類型的數組,我們不能往當中插入不論什麼不是String 類型的資料。 Swift 中的數組是型別安全的。而且它們中包括的類型必須明白。

var shoppingList: String[] = ["Eggs", "Milk"]
由於Swift有類型判斷。 所以當我們擁有同樣類型的數組值時,我們能夠寫成:var shoppingList = ["Eggs", "Milk"]
28、建立空數組建立特定資料類型的空數組,比如建立Int類型的空數組。

var someInts = Int[]() 
29、數組的屬性和方法(1)count屬性:獲得數組中資料的數量。(2)isEmpty屬性:檢查數組是否存在值。(3)append / += 方法:我們能夠使用append方法或者 += 運算子在數組後面加入資料項目。比如:shoppingList.append("Flour") 或者 shoppingList += "Baking Powder" 或者 shoppingList += [ "Cheese", "Butter"](4)insert(atIndex:)方法:在某個詳細索引值之前加入資料項目。比如:shoppingList.insert("Maple Syrup", atIndex: 0)(5)removeAtIndex()方法:移除數組中的某一項。這種方法把數組在特定索引值中儲存的資料項目移除而且返回這個被移除的資料項目。

比如:let mapleSyrup = shoppingList.removeAtIndex(0)(6)removeLast()方法:移除數組中最後一項並返回其值。

30、利用下標改變一系列資料值即使新資料和原有資料的數量是不一樣的。以下的範例把"Chocolate Spread"。"Cheese",和"Butter" 替換為"Bananas"和 "Apples":shoppingList[4...6] = ["Bananas", "Apples"]
31、數組遍曆一般來說,for-in迴圈就可以,可是假設我們須要每一個資料項目的值和索引,則須要使用全域 enumerate 函數來進行數組遍曆,比如:for (index, value) in enumerate(shoppingList) { ...}
32、建立特定大小,資料預設的Array// threeDoubles 是一種 Double[]數組, 等於 [0.0, 0.0, 0.0] var threeDoubles = Double[](count: 3, repeatedValue:0.0) 
由於我們Swift有類型判斷的存在,所以在使用這樣的構造方法的時候不須要指明資料類型,由於從value中我們就知道了資料的類型:var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)

33、字典字典是一種儲存同樣類型多重資料的儲存空間。每一個值(value)都關聯獨特的鍵(key)。鍵作為字典中的這個值資料的標識符。註:在某個特定字典中能夠儲存的鍵和值必須預定義清楚。方法是通過顯性類型標註或者類型判斷。
Swift 的字典使用Dictionary<KeyType, ValueType>定義,當中KeyType是字典中鍵的資料類型。ValueType是字典中相應於這些鍵所儲存值的資料類型。比如:var airports: Dictionary<String, String> = ["TYO": "Tokyo", "DUB": "Dublin"]
和數組一樣,假設我們使用字面語句構造字典就不用把類型定義清楚。

airports的也能夠用這樣的方法簡短定義:var airports = ["TYO": "Tokyo", "DUB": "Dublin"]

34、字典的方法和屬性基本和數組一樣,都有類似的方法和屬性,而且特別存在例如以下:(1)updateValue(forKey:)方法:在這個鍵不存在相應值的時候設定值或者在存在時更新已存在的值,這種方法返回更新值之前的原值。這樣方便我們檢查更新是否成功。

(2)removeValueForKey(KeyName)方法:在鍵值對存在的情況下會移除該鍵值對而且返回被移除的value或者在沒有值的情況下返回nil。
35、移除鍵值對我們能夠對某個鍵相應值賦予nil來移除這個鍵值對。airports["APL"] = nil
36、字典遍曆使用for-in就可以:for (airportCode, airportName) in airports {  ...}
37、字典的keys 或 values 屬性這些屬性代表一個字典的全部key 或 value 的集合。for airportCode in airports.keys { ... }
for airportName in airports.values {      .... } 

38、將鍵 或 值構造成一個新數組let airportCodes = Array(airports.keys) // airportCodes is ["TYO", "LHR"]  let airportNames = Array(airports.values) // airportNames is ["Tokyo", "London Heathrow"]

39、建立一個空字典var namesOfIntegers = Dictionary<Int, String>()
註:假設上下文中存在了空字典的字面語句,比如:namesOfIntegers[16] = "sixteen" ,則我們能夠使用 namesOfIntegers = [:]  來定義一個Int, String類型的空字典。

Swift基礎類型

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.