-
學(xué)習(xí)或創(chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu)注重對(duì)增、刪、改、查的學(xué)習(xí)
創(chuàng)建一個(gè)數(shù)組:
? ? ? ?
增:
.append(添加內(nèi)容): 依次為數(shù)組添加元素
數(shù)組名 += [添加內(nèi)容]: 即使只添加一個(gè)元素也需要[],因?yàn)閰⑴c運(yùn)算的元素要是一致數(shù)據(jù)類型的
.insert(添加的內(nèi)容, atIndex: 索引):遇到索引就要注意索引越界問(wèn)題
刪:
.removeLast():刪除數(shù)組最后一個(gè)元素
.removeFirst():刪除數(shù)組的第一個(gè)元素
.removeAtIndex(索引值):刪除特定(索引值對(duì)應(yīng))的數(shù)組元素
.removeRange(索引范圍):刪除特定范圍(索引范圍對(duì)應(yīng)的)的數(shù)組元素
.removeAll():刪除所有元素,該數(shù)組為空數(shù)組
改:
數(shù)組名[索引值] = [修改內(nèi)容]:修改對(duì)應(yīng)索引的內(nèi)容
數(shù)組名[索引范圍] = [對(duì)應(yīng)索引范圍的修改內(nèi)容]:修改對(duì)應(yīng)索引范圍的內(nèi)容,注意索引范圍的索引個(gè)數(shù)和修改內(nèi)容數(shù)組的元素個(gè)數(shù)并不一致。
查看全部 -
2. 數(shù)組的基本用法
數(shù)組名.count: 數(shù)組元素個(gè)數(shù)
數(shù)組名.isEmpty: 判斷數(shù)組是否為空,返回是布爾類型
通過(guò)索引值(數(shù)組下標(biāo))獲取元素(數(shù)組從0開始索引,索引值為0的是第一個(gè)數(shù)組元素):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)組名[索引值]
注意:用數(shù)字索引會(huì)發(fā)生索引越界問(wèn)題,需要開發(fā)者控制。
數(shù)組名.first / .last: 取數(shù)組的第一個(gè) / 最后一個(gè)元素, 返回的是可選型(有的數(shù)組不一定存在第一個(gè)或者最后一個(gè)元素)
可選類型應(yīng)用:空數(shù)組名.first 返回的是 nil?
在實(shí)際使用.first的時(shí)候可以解包使用如:if let 變量名 = 數(shù)組名.first{ 使用到該數(shù)組第一個(gè)元素的語(yǔ)句 }(這樣使用可在遇到空數(shù)組或者沒(méi)有第一個(gè)元素的時(shí)候不會(huì)崩潰)
let定義為常量時(shí),數(shù)組不會(huì)變化(用戶修改不了),可確定數(shù)組是否為空來(lái)確定是否可以強(qiáng)制解包,這里安全性是由開發(fā)人員來(lái)保障。
邏輯判斷最后一個(gè)元素:數(shù)組名[數(shù)組名.count - 1]
數(shù)組名.minElement() / .maxElement(): 返回可選型?
獲取一定范圍的子數(shù)組:
? ? ? ? ? ? ? ? ? 數(shù)組名[范圍(eg:1..<4)]
數(shù)組名.contains():驗(yàn)證返回這個(gè)數(shù)組是否存在某個(gè)元素,返回布爾類型
數(shù)組名.indexOf():驗(yàn)證這個(gè)數(shù)組是否存在某個(gè)元素,但返回的是索引值
for循環(huán)遍歷數(shù)組獲取數(shù)組元素、數(shù)組元素索引值(.enumerate()) ? ??
? ? ? ? ? ? ? ? ? ? for 變量名 in 數(shù)組名 {對(duì)獲取的數(shù)組元素進(jìn)行操作}
? ? ? ? ? ? ? ? ? ? for (索引變量名, 元素變量名) in 數(shù)組名.enumerate() {使用到索引值和元素的語(yǔ)句}
?數(shù)組名1 == 數(shù)組名2 :其他語(yǔ)言比較的是引用(也是地址吧),此語(yǔ)句不成立,swift比較的是值,故此語(yǔ)句成立。
強(qiáng)調(diào):數(shù)組是一個(gè)有序的數(shù)據(jù)集合(在比較的時(shí)候要特別注意)
查看全部 -
二、容器類:數(shù)組(array)、 字典(dictionary)、 集合(set)
1.數(shù)組 array
聲明初始化數(shù)組:[ , ]
數(shù)組中各元素的元素類型必須是一致的
顯式聲明初始化:變量名: [數(shù)據(jù)類型] = [元素1, 元素2,...]?
? ? ? ? ? ? ? ? ? 變量名: Array<數(shù)據(jù)類型> = [元素1, 元素2, ...]
聲明初始化空數(shù)組:變量名 = Array<數(shù)據(jù)類型>()
非顯式聲明空數(shù)組:變量名 = [數(shù)據(jù)類型]()
當(dāng)在實(shí)際應(yīng)用中,出現(xiàn)數(shù)組中的參數(shù)很多且初始值為0或者為某一相同值時(shí),可以用如下方式聲明初始化數(shù)組: ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? 變量名 = [數(shù)據(jù)類型](count: 5, repetedValue: 0)?
? ? ? ? ? ? 變量名 = Array<數(shù)據(jù)類型>(count: 5, repetedValue: 0)
注意:
字符串?dāng)?shù)據(jù)類型和字符數(shù)據(jù)類型。" "默認(rèn)為字符串?dāng)?shù)據(jù)類型,字符數(shù)據(jù)類型可定義數(shù)據(jù)類型為Character(字符類型數(shù)組需用對(duì)應(yīng)的數(shù)據(jù)類型顯式聲明初始化)
在swift中Array和NSArray雖然都是數(shù)組,但不是同一種東西。
查看全部 -
集合的高級(jí)使用查看全部
-
數(shù)組初始化查看全部
-
元組: 函數(shù)的返回值有多個(gè)需要考慮返回元組
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數(shù)組是否相等 是判斷值是否相等,有序的數(shù)據(jù)集合
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)//類型轉(zhuǎn)換涉及到可選型
if let age = age, age < 20{
? ? print("you are teenager\n")
}
查看全部 -
swit 的三目運(yùn)算符
var errorMessage: String? = nil
? ? ? ? let message1 = errorMessage ?? "no Error"
? ? ? ? let message2 = errorMessage == nil ? "no error" : errorMessage
查看全部 -
可選型:swift的設(shè)計(jì)師不認(rèn)為 nil null應(yīng)該是某種類型(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"{
//通過(guò)where添加限制條件
}
查看全部 -
errorMessage?.uppercased()
"?" 嘗試進(jìn)行解包
errorMessage!.uppercased()
"!"強(qiáng)制進(jìn)行解包
查看全部 -
默認(rèn)都是傳值,傳引用用inout關(guān)鍵字
查看全部 -
errormessage?.upercasString
查看全部 -
let message =er ?? "not found"
查看全部 -
04-2?可變長(zhǎng)參數(shù)
// 變長(zhǎng)參數(shù)只能有一個(gè)
// 變長(zhǎng)參數(shù)不一定放在最后
func mean( numbers: Double ... ) -> Double{
// 將變長(zhǎng)參數(shù)當(dāng)做一個(gè)數(shù)組看待
? ? for number in numbers{
查看全部 -
大寫的服查看全部
舉報(bào)