swift5.3-day02--數(shù)組旨袒,字典,集合和枚舉

1术辐、數(shù)組Array

數(shù)組是存儲(chǔ)為單個(gè)值的值的集合砚尽。例如,John辉词,Paul必孤,George和Ringo是名字,但是數(shù)組使您可以將它們分組為一個(gè)名為The Beatles的單一值瑞躺。

let john = "John Lennon"
let paul = "Paul McCartney"
let george = "George Harrison"
let ringo = "Ringo Starr"

let beatles = [john, paul, george, ringo]
//let beatles:[String] = [john, paul, george, ringo]

您可以通過在方括號(hào)內(nèi)寫一個(gè)數(shù)字來從數(shù)組中讀取值敷搪。數(shù)組位置從0開始計(jì)數(shù)

beatles[1]
//:如果讀取不存在的項(xiàng)目输拇,Swift就會(huì)崩潰扔茅。例如僚纷,嘗試beatles[9]

2楼熄、集合Sets

集合特性:元素不重復(fù)、存儲(chǔ)無序闸与、元素類型均相同顽悼。

您可以直接從數(shù)組創(chuàng)建集,如下所示:

let colors = Set(["red", "green", "blue"])

如果您嘗試將重復(fù)項(xiàng)插入到集合中几迄,則重復(fù)項(xiàng)將被忽略

3蔚龙、元組Tuples

元組允許您將多個(gè)值存儲(chǔ)在一個(gè)值中。這聽起來像數(shù)組映胁,但是元組不同:

1木羹、您不能在元組中添加或刪除項(xiàng)目;它們的大小是固定的解孙。

2坑填、您無法更改元組中的項(xiàng)目類型;它們始終具有與創(chuàng)建時(shí)相同的類型弛姜。

3脐瑰、您可以使用數(shù)字位置或命名它們來訪問元組中的項(xiàng)目,但是Swift不允許您讀取不存在的數(shù)字或名稱廷臼。

var name = (first: "Taylor", last: "Swift")
//讀取
name.0
//name.first

創(chuàng)建元組后可以更改其值苍在,但不能更改值的類型。因此荠商,如果您嘗試將其更改name為be (first: "Justin", age: 25)寂恬,則會(huì)收到錯(cuò)誤消息。

4莱没、字典Dictionary

字典就像數(shù)組一樣是值的集合初肉,但是您不必使用整數(shù)位置存儲(chǔ)內(nèi)容,而是可以使用所需的任何內(nèi)容來訪問它們饰躲。

存儲(chǔ)字典數(shù)據(jù)的最常見方法是使用字符串

let heights = [
    "Taylor Swift": 1.78,
    "Ed Sheeran": 1.73
]
//讀取
heights["Taylor Swift"]

注意:使用類型注釋時(shí)牙咏,字典用括號(hào)括起來,在標(biāo)識(shí)符和值類型之間用冒號(hào)表示嘹裂。例如[String: Double][String: String]妄壶。

如果您嘗試使用不存在的鍵從字典中讀取一個(gè)值,Swift將會(huì)發(fā)回您nil-完全沒有焦蘑。盡管這可能是您想要的盯拱,但還有另一種選擇:我們可以為字典提供一個(gè)默認(rèn)值,以供我們?cè)谛枰鄙冁I的情況下使用例嘱。

let favoriteIceCream = [
    "Paul": "Chocolate",
    "Sophie": "Vanilla"
]

favoriteIceCream["Paul"]

我們可以通過將字典的默認(rèn)值設(shè)置為“未知”來解決此問題狡逢,以便在找不到夏洛特冰淇淋時(shí),返回“Unknown”而不是nil:

favoriteIceCream["Charlotte", default: "Unknown"]

5拼卵、創(chuàng)建空集合

數(shù)組奢浑,集合和字典稱為集合,因?yàn)樗鼈儗⒅导性谝黄稹?/p>

如果要?jiǎng)?chuàng)建一個(gè)空集合腋腮,只需寫出它的類型雀彼,然后加上和關(guān)閉括號(hào)即可。例如即寡,我們可以創(chuàng)建一個(gè)空字典徊哑,其中包含用于鍵和值的字符串,如下所示

var teams = [String: String]()
teams["Paul"] = "Red"
//您可以創(chuàng)建一個(gè)空數(shù)組來存儲(chǔ)整數(shù)
var results = [Int]()
//創(chuàng)建一個(gè)空集聪富,這是通過不同的方式完成的
var words = Set<String>()
var numbers = Set<Int>()

Swift僅對(duì)字典和數(shù)組具有特殊的語法莺丑;其他類型必須使用尖括號(hào)語法(例如set)。

如果需要墩蔓,可以使用類似的語法創(chuàng)建數(shù)組和字典:

var scores = Dictionary<String, Int>()
var results = Array<Int>()

6梢莽、枚舉Enumerations

枚舉(通常稱為枚舉)是一種定義一組相關(guān)值的方式,使它們更易于使用奸披。

enum Result {
    case success
    case failure
}

let result4 = Result.failure

除了存儲(chǔ)簡(jiǎn)單值之外昏名,枚舉還可以存儲(chǔ)附加到每種情況的關(guān)聯(lián)值。這使您可以將附加信息附加到枚舉阵面,以便它們可以代表更多細(xì)微差別的數(shù)據(jù)

//enum Activity {
//  case bored
//  case running
//  case talking
//  case singing
//}
enum Activity {
    case bored
    case running(destination: String)
    case talking(topic: String)
    case singing(volume: Int)
}
//
let talking = Activity.talking(topic: "football")

有時(shí)您需要能夠?yàn)槊杜e賦值轻局,以便它們具有含義。這使您可以動(dòng)態(tài)創(chuàng)建它們样刷,并以不同方式使用它們嗽交。

enum Planet: Int {
    case mercury
    case venus
    case earth
    case mars
}

Swift會(huì)自動(dòng)為每個(gè)數(shù)字分配一個(gè)從0開始的數(shù)字,您可以使用該數(shù)字創(chuàng)建相應(yīng)枚舉大小寫的實(shí)例颂斜。例如夫壁,earth將被賦予數(shù)字2,因此您可以這樣編寫:

let earth = Planet(rawValue: 2)

也可以改變從1開始

enum Planet: Int {
    case mercury = 1
    case venus
    case earth
    case mars
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沃疮,一起剝皮案震驚了整個(gè)濱河市盒让,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌司蔬,老刑警劉巖邑茄,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異俊啼,居然都是意外死亡肺缕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來同木,“玉大人浮梢,你說我怎么就攤上這事⊥罚” “怎么了秕硝?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洲尊。 經(jīng)常有香客問我远豺,道長(zhǎng),這世上最難降的妖魔是什么坞嘀? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任躯护,我火速辦了婚禮,結(jié)果婚禮上丽涩,老公的妹妹穿的比我還像新娘棺滞。我一直安慰自己,他們只是感情好内狸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布检眯。 她就那樣靜靜地躺著,像睡著了一般昆淡。 火紅的嫁衣襯著肌膚如雪锰瘸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天昂灵,我揣著相機(jī)與錄音避凝,去河邊找鬼。 笑死眨补,一個(gè)胖子當(dāng)著我的面吹牛管削,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撑螺,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼含思,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了甘晤?” 一聲冷哼從身側(cè)響起含潘,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎线婚,沒想到半個(gè)月后遏弱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塞弊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年漱逸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泪姨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饰抒,死狀恐怖肮砾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情循集,我是刑警寧澤唇敞,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布蔗草,位于F島的核電站咒彤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咒精。R本人自食惡果不足惜镶柱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望模叙。 院中可真熱鬧歇拆,春花似錦、人聲如沸范咨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渠啊。三九已至输吏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間替蛉,已是汗流浹背贯溅。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躲查,地道東北人它浅。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像镣煮,于是被迫代替她去往敵國(guó)和親姐霍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353