1.2 基本類型

swift對數(shù)據(jù)進(jìn)行了分類,分類是人類認(rèn)識(shí)這個(gè)世界的重要方法,我們在學(xué)習(xí)的過程中常常會(huì)用到這種方法仅颇,比方我們把世界分類為動(dòng)物,植物抛猖,有機(jī)物無機(jī)物等等,這里有一個(gè)有趣的矛盾路克,我們一邊對世界做分類樟结,一邊還要探索世界的本源,人類越是認(rèn)識(shí)這個(gè)到這個(gè)世界的五彩繽紛精算,人類就也迫切希望能夠知道這個(gè)世界的本源是什么瓢宦。

這個(gè)矛盾也同時(shí)存在于swift語言當(dāng)中。swift一面對數(shù)據(jù)做分類灰羽,一面通過對類型抽象來實(shí)現(xiàn)一致性的表達(dá)驮履。我們先描述一下swift的分類,后面會(huì)詳細(xì)整理類型的抽象廉嚼。

1玫镐、基本類型

  • Int:表示整數(shù),包括正數(shù)怠噪、零恐似、負(fù)數(shù),例如 1傍念、0矫夷、-1

整型包括符號(hào)整型(Int)葛闷、無符號(hào)整型(UInt),每種類型又包括8双藕、16淑趾、32、64位的表達(dá)形式忧陪,對于一個(gè)初學(xué)者來說扣泊,你完全可以暫時(shí)忽略這些內(nèi)容,只簡單使用 Int嘶摊。

  • String: 表示文本延蟹,例如我們已經(jīng)使用過的 "Hello,swift",在swift中,用""括起來的內(nèi)容基本就是文本類型更卒。

注意
我們經(jīng)常需要對String進(jìn)行拼接等孵、遍歷、替換字符等操作蹂空,因?yàn)镾tring是值類型,其內(nèi)容又是characters集合類型果录,所以其可變性暫時(shí)超過了我們今天需要總結(jié)的內(nèi)容上枕,我后面會(huì)增補(bǔ)一個(gè)鏈接來補(bǔ)充總結(jié)。

  • 浮點(diǎn)數(shù)(Double弱恒、Float): 浮點(diǎn)數(shù)用來表示帶有小數(shù)部分的數(shù)字辨萍,例如 3.1415926

浮點(diǎn)數(shù)分為兩種類型,Double和Float返弹,他們都可以表示浮點(diǎn)數(shù)锈玉,區(qū)別在于Double類型的精度更高,代價(jià)呢也就是占用的內(nèi)存更多义起,精度有多高拉背?留到我們整整需要了解的時(shí)候再研究吧,我們需要了解的是:swift默認(rèn)會(huì)為你選擇Double類型默终。

  • Bool: 布爾類型椅棺,用來表示 “真” 或者 “假”

Bool類型只有兩個(gè)值,true和fase齐蔽。Bool類型的值可以幫助我們來控制流程分支两疚,否則恐怕我們只能寫出線性執(zhí)行的程序了。

有了這些基本類型我們就可以方便的為現(xiàn)實(shí)世界中的事物進(jìn)行建模了含滴,比方說我們來描繪一下一位同學(xué)的信息狀況诱渤。

    var name = "小明" // 姓名 為 ”小明“,使用了String
    var age = 21     // 年紀(jì) = 21 谈况,使用了 Int
    var height = 175.5 // 身高 = 175.5勺美,使用了 浮點(diǎn)數(shù)(Double)
    var married = false // 婚姻狀態(tài) = false 递胧,使用了 Bool 類型

2、類型安全

swift語言對類型的態(tài)度是非忱常“較真”的谓着,有些語言確持有相反的態(tài)度,我們先看一下ruby語言對這個(gè)問題的處理方式

x = 10  // 先將變量x賦值一個(gè)整數(shù)
x = "Hello,World" // 現(xiàn)在將x重新賦值一個(gè)字符串坛掠,我們可以看到赊锚,賦值成功了

在面對用新的類型對x進(jìn)行重新復(fù)制的時(shí)候,ruby表現(xiàn)出了”您隨意“的寬容態(tài)度屉栓。我們繼續(xù)看舷蒲,我們對x進(jìn)行一次數(shù)學(xué)運(yùn)算操作會(huì)怎樣。

x = 10
x = "Hello,World"
x = x - 1 // error !!!!!!

這時(shí)候ruby會(huì)毫不遲疑的拋出錯(cuò)誤友多,態(tài)度是這樣的:“這個(gè)錯(cuò)誤和我可是沒有關(guān)系的牲平,完全是程序員自己賦值是類型弄錯(cuò)了”。這是寬容背后的殘忍嗎域滥?

現(xiàn)在我們再看一下swift對同一個(gè)問題的態(tài)度纵柿,我們嘗試將小明的年紀(jì)修改為一個(gè)字符串。

var age = 21
age = "Hello,World" // error !!!!!!

如果我們進(jìn)嘗試行這樣的修改启绰,那么我們會(huì)立刻得到swift編譯器給我們的錯(cuò)誤提示:“抱怨我們將一個(gè)String類型的值賦給一個(gè)Int類型的變量”昂儒。在ruby中可能會(huì)發(fā)生的錯(cuò)誤,在swift中委可,絕對不允許渊跋,不允許。這就是swift對類型的態(tài)度着倾。swift編譯器會(huì)對類型進(jìn)行嚴(yán)格的檢查拾酝,明確每一個(gè)值所屬的類型,禁止類型“錯(cuò)位”卡者,把運(yùn)行時(shí)錯(cuò)誤降到最低蒿囤。

3、類型推斷

那么問題來了虎眨,swift是如何知道age是一個(gè)Int類型蟋软,而不是一個(gè)String類型的呢?這里swift使用了類型推斷機(jī)制嗽桩。當(dāng)我們給age進(jìn)行賦值21的時(shí)候岳守,編譯器會(huì)根據(jù)21的類型(Int),來推斷出age的類型一定為Int類型碌冶。通常靜態(tài)類型的語言會(huì)要求我們聲明變量的時(shí)候湿痢,同時(shí)指明變量的類型,類型推斷則是一種延時(shí)方式,允許我們將類型的確定延時(shí)到第一次賦值的時(shí)候譬重。

4拒逮、顯示聲明

那我們是不是只有在變量賦值的時(shí)候才能確定一個(gè)變量的類型呢?當(dāng)然不是了臀规,swift同樣為我們提供了顯示聲明的方式滩援,允許我們在聲明一個(gè)變量的時(shí)候就指定變量的類型。我們用顯示聲明的方式塔嬉,從新描述一下小明的信息玩徊。

    var name: String = "小明" 
    var age: Int = 21 
    var height: Double = 175.5
    var married: Bool = false

顯示聲明時(shí)指定變量的類型的工作通常是重復(fù)又缺少意義的,swift為我們提供了類型推斷機(jī)制谨究,減輕我們編程的工作量恩袱,編譯器越是聰明,我們的工作就會(huì)越輕松愉快胶哲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畔塔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鸯屿,更是在濱河造成了極大的恐慌澈吨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寄摆,死亡現(xiàn)場離奇詭異棚辽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冰肴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榔组,“玉大人熙尉,你說我怎么就攤上這事〈瓿叮” “怎么了检痰?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锨推。 經(jīng)常有香客問我铅歼,道長,這世上最難降的妖魔是什么换可? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任椎椰,我火速辦了婚禮,結(jié)果婚禮上沾鳄,老公的妹妹穿的比我還像新娘慨飘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布瓤的。 她就那樣靜靜地躺著休弃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪圈膏。 梳的紋絲不亂的頭發(fā)上塔猾,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音稽坤,去河邊找鬼丈甸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慎皱,可吹牛的內(nèi)容都是我干的老虫。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼茫多,長吁一口氣:“原來是場噩夢啊……” “哼祈匙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起天揖,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤夺欲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后今膊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體些阅,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年斑唬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了市埋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恕刘,死狀恐怖缤谎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情褐着,我是刑警寧澤坷澡,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站含蓉,受9級(jí)特大地震影響频敛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馅扣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一斟赚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岂嗓,春花似錦汁展、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侈咕。三九已至,卻和暖如春器紧,著一層夾襖步出監(jiān)牢的瞬間耀销,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國打工铲汪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熊尉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓掌腰,卻偏偏與公主長得像狰住,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子齿梁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,820評(píng)論 1 10
  • Swift 是一門開發(fā) iOS, macOS, watchOS 和 tvOS 應(yīng)用的新語言催植。然而,如果你有 C 或...
    XLsn0w閱讀 922評(píng)論 2 1
  • 關(guān)于 Swift 重要這個(gè)文檔所包含的準(zhǔn)備信息, 是關(guān)于開發(fā)的 API 和技術(shù)的勺择。這個(gè)信息可能會(huì)改變, 根據(jù)這個(gè)文...
    無灃閱讀 4,320評(píng)論 1 27
  • 靜待山茶花兒開…… 辦公室里有一盆花创南,木本,葉子橢圓省核,很有生機(jī)稿辙。原來不認(rèn)識(shí)她,不知道她叫什么名字气忠,也就無從了解她的...
    六月_cef1閱讀 490評(píng)論 0 2
  • 人善被人欺邻储,這句話真的是一點(diǎn)沒說錯(cuò)! 有些人老實(shí)話不多,勤奮又肯干旧噪,扎實(shí)還細(xì)心芥备,上進(jìn)能吃苦 可是為毛有那么多人就是...
    糊小姐閱讀 202評(píng)論 2 4