-
學習或創建一個數據結構注重對增、刪、改、查的學習
創建一個數組:
? ? ? ?
增:
.append(添加內容): 依次為數組添加元素
數組名 += [添加內容]: 即使只添加一個元素也需要[],因為參與運算的元素要是一致數據類型的
.insert(添加的內容, atIndex: 索引):遇到索引就要注意索引越界問題
刪:
.removeLast():刪除數組最后一個元素
.removeFirst():刪除數組的第一個元素
.removeAtIndex(索引值):刪除特定(索引值對應)的數組元素
.removeRange(索引范圍):刪除特定范圍(索引范圍對應的)的數組元素
.removeAll():刪除所有元素,該數組為空數組
改:
數組名[索引值] = [修改內容]:修改對應索引的內容
數組名[索引范圍] = [對應索引范圍的修改內容]:修改對應索引范圍的內容,注意索引范圍的索引個數和修改內容數組的元素個數并不一致。
查看全部 -
2. 數組的基本用法
數組名.count: 數組元素個數
數組名.isEmpty: 判斷數組是否為空,返回是布爾類型
通過索引值(數組下標)獲取元素(數組從0開始索引,索引值為0的是第一個數組元素):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數組名[索引值]
注意:用數字索引會發生索引越界問題,需要開發者控制。
數組名.first / .last: 取數組的第一個 / 最后一個元素, 返回的是可選型(有的數組不一定存在第一個或者最后一個元素)
可選類型應用:空數組名.first 返回的是 nil?
在實際使用.first的時候可以解包使用如:if let 變量名 = 數組名.first{ 使用到該數組第一個元素的語句 }(這樣使用可在遇到空數組或者沒有第一個元素的時候不會崩潰)
let定義為常量時,數組不會變化(用戶修改不了),可確定數組是否為空來確定是否可以強制解包,這里安全性是由開發人員來保障。
邏輯判斷最后一個元素:數組名[數組名.count - 1]
數組名.minElement() / .maxElement(): 返回可選型?
獲取一定范圍的子數組:
? ? ? ? ? ? ? ? ? 數組名[范圍(eg:1..<4)]
數組名.contains():驗證返回這個數組是否存在某個元素,返回布爾類型
數組名.indexOf():驗證這個數組是否存在某個元素,但返回的是索引值
for循環遍歷數組獲取數組元素、數組元素索引值(.enumerate()) ? ??
? ? ? ? ? ? ? ? ? ? for 變量名 in 數組名 {對獲取的數組元素進行操作}
? ? ? ? ? ? ? ? ? ? for (索引變量名, 元素變量名) in 數組名.enumerate() {使用到索引值和元素的語句}
?數組名1 == 數組名2 :其他語言比較的是引用(也是地址吧),此語句不成立,swift比較的是值,故此語句成立。
強調:數組是一個有序的數據集合(在比較的時候要特別注意)
查看全部 -
二、容器類:數組(array)、 字典(dictionary)、 集合(set)
1.數組 array
聲明初始化數組:[ , ]
數組中各元素的元素類型必須是一致的
顯式聲明初始化:變量名: [數據類型] = [元素1, 元素2,...]?
? ? ? ? ? ? ? ? ? 變量名: Array<數據類型> = [元素1, 元素2, ...]
聲明初始化空數組:變量名 = Array<數據類型>()
非顯式聲明空數組:變量名 = [數據類型]()
當在實際應用中,出現數組中的參數很多且初始值為0或者為某一相同值時,可以用如下方式聲明初始化數組: ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? 變量名 = [數據類型](count: 5, repetedValue: 0)?
? ? ? ? ? ? 變量名 = Array<數據類型>(count: 5, repetedValue: 0)
注意:
字符串數據類型和字符數據類型。" "默認為字符串數據類型,字符數據類型可定義數據類型為Character(字符類型數組需用對應的數據類型顯式聲明初始化)
在swift中Array和NSArray雖然都是數組,但不是同一種東西。
查看全部 -
集合的高級使用查看全部
-
數組初始化查看全部
-
元組: 函數的返回值有多個需要考慮返回元組
func finmaxAndMin( numbers:[int]) -> (max: Int, min: Int){
????return (30,0)
}
查看全部 -
//隱式可選型 可為nil,可有值
var numbers: [Int] = [1,2,3,4,5]
var oneToFive = [1,3,4,2,5]
var vowels : [String] = ["A","E","I","O","U"]
vowels.count
vowels.isEmpty
vowels[1]
vowels.first
vowels.last
vowels.min()
vowels.max()
vowels.index(of: "E")
numbers.index(of: 3)
numbers[2..<4]
for (index,value) in vowels.enumerated(){
? ? print(value)
? ? print(index)
}
//swift數組是否相等 是判斷值是否相等,有序的數據集合
oneToFive == numbers
查看全部 -
//隱式可選型 可為nil,可有值
class City{
? ? var cityName: String
?? unowned var country: Country
? ? init(cityName: String, country: Country) {
? ? ? ? self.cityName = cityName
? ? ? ? self.country = country
? ? }
}
class Country {
? ? let countryName: String
? ? var capitalCity: City?
? ? init(countryName: String, capitalCity:String) {
? ? ? ? self.countryName = countryName
? ? ? ? self.capitalCity = City(cityName: capitalCity, country: self)
? ? }
? ? func showInfo(){
? ? ? ? print("this is \(countryName)")
? ? ? ? print("the capital is \(String(describing: capitalCity?.cityName))")
? ? }
}
let china = Country(countryName: "China", capitalCity: "beiJing")
china.showInfo()
查看全部 -
var ageInput: String = "16"
var age = Int(ageInput)//類型轉換涉及到可選型
if let age = age, age < 20{
? ? print("you are teenager\n")
}
查看全部 -
swit 的三目運算符
var errorMessage: String? = nil
? ? ? ? let message1 = errorMessage ?? "no Error"
? ? ? ? let message2 = errorMessage == nil ? "no error" : errorMessage
查看全部 -
可選型:swift的設計師不認為 nil null應該是某種類型(int)的特殊值,nil就是一種類型
2.可選型必須依附其他類型
var errorCode: String? = "404"
var errorMessage: String? = "not found"
if let errorCode = errorCode{
????"error code is " + errorCode
}
if let errorCode = errorCode, errorMessage = errorMessage, where errorCode == "404"{
//通過where添加限制條件
}
查看全部 -
errorMessage?.uppercased()
"?" 嘗試進行解包
errorMessage!.uppercased()
"!"強制進行解包
查看全部 -
默認都是傳值,傳引用用inout關鍵字
查看全部 -
errormessage?.upercasString
查看全部 -
let message =er ?? "not found"
查看全部 -
04-2?可變長參數
// 變長參數只能有一個
// 變長參數不一定放在最后
func mean( numbers: Double ... ) -> Double{
// 將變長參數當做一個數組看待
? ? for number in numbers{
查看全部 -
大寫的服查看全部
舉報