swift基礎語法

一.基礎語法:


Swift 是 iOS 和 OS X 應用開發的一門新語言。然而,如果你有 C 或者 Objective-C 開發經驗的話,你會發現 Swift 的很多內容都是你熟悉的。

Swift 的類型是在 C 和 Objective-C 的基礎上提出的,Int是整型;Double和Float是浮點型;Bool是布爾型;String是字符串。Swift 還有兩個有用的集合類型,Array和Dictionary,請參考集合類型

就像 C 語言一樣,Swift 使用變量來進行存儲并通過變量名來關聯值。在 Swift 中,值不可變的變量有著廣泛的應用,它們就是常量,而且比 C 語言的常量更強大。在 Swift 中,如果你要處理的值不需要改變,那使用常量可以讓你的代碼更加安全并且更好地表達你的意圖。

除了我們熟悉的類型,Swift 還增加了 Objective-C 中沒有的類型比如元組(Tuple)。元組可以讓你創建或者傳遞一組數據,比如作為函數的返回值時,你可以用一個元組可以返回多個值。

Swift 還增加了可選(Optional)類型,用于處理值缺失的情況。可選表示“那兒有一個值,并且它等于 x ”或者“那兒沒有值”。可選有點像在 Objective-C 中使用nil,但是它可以用在任何類型上,不僅僅是類。可選類型比 Objective-C 中的nil指針更加安全也更具表現力,它是 Swift 許多強大特性的重要組成部分。

Swift 是一個類型安全的語言,可選就是一個很好的例子。Swift 可以讓你清楚地知道值的類型。如果你的代碼期望得到一個String,類型安全會阻止你不小心傳入一個Int。你可以在開發階段盡早發現并修正錯誤。

變量和常量:

常量和變量把一個名字(比如maximumNumberOfLoginAttempts或者welcomeMessage)和一個指定類型的值(比如數字10或者字符串"Hello")關聯起來。常量的值一旦設定就不能改變,而變量的值可以隨意更改。

聲明常量和變量:

常量和變量必須在使用前聲明,用let來聲明常量,用var來聲明變量。下面的例子展示了如何用常量和變量來記錄用戶嘗試登錄的次數:


let maximumNumberOfLoginAttempts = 10

var currentLoginAttempt = 0


數值型字面量:


整數字面量可以被寫作:

一個十進制數,沒有前綴

一個二進制數,前綴是0b

一個八進制數,前綴是0o

一個十六進制數,前綴是0x

下面的所有整數字面量的十進制值都是17:

let decimalInteger = 17

let binaryInteger = 0b10001 // 二進制的17

let octalInteger = 0o21 // 八進制的17

let hexadecimalInteger = 0x11 // 十六進制的17

浮點字面量可以是十進制(沒有前綴)或者是十六進制(前綴是0x)。小數點兩邊必須有至少一個十進制數字(或者是十六進制的數字)。浮點字面量還有一個可選的指數(exponent),在十進制浮點數中通過大寫或者小寫的e來指定,在十六進制浮點數中通過大寫或者小寫的p來指定。

如果一個十進制數的指數為exp,那這個數相當于基數和$10^{exp}$的乘積:

1.25e2?表示 $1.25 × 10^{2}$,等于?125.0。

1.25e-2?表示 $1.25 × 10^{-2}$,等于?0.0125。

如果一個十六進制數的指數為exp,那這個數相當于基數和$2^{exp}$的乘積:

0xFp2?表示 $15 × 2^{2}$,等于?60.0。

0xFp-2?表示 $15 × 2^{-2}$,等于?3.75。

下面的這些浮點字面量都等于十進制的12.1875:

let decimalDouble = 12.1875

let exponentDouble = 1.21875e1

let hexadecimalDouble = 0xC.3p0

數值類字面量可以包括額外的格式來增強可讀性。整數和浮點數都可以添加額外的零并且包含下劃線,并不會影響字面量:


let paddedDouble = 000123.456

let oneMillion = 1_000_000

let justOverOneMillion = 1_000_000.000_000_1


元組

元組(tuples)把多個值組合成一個復合值。元組內的值可以使任意類型,并不要求是相同類型。

下面這個例子中,(404, "Not Found")是一個描述?HTTP 狀態碼(HTTP status code)的元組。HTTP 狀態碼是當你請求網頁的時候 web 服務器返回的一個特殊值。如果你請求的網頁不存在就會返回一個404 Not Found狀態碼。

let http404Error = (404, "Not Found") // http404Error 的類型是 (Int, String),值是 (404, "Not Found")

(404, "Not Found")元組把一個Int值和一個String值組合起來表示 HTTP 狀態碼的兩個部分:一個數字和一個人類可讀的描述。這個元組可以被描述為“一個類型為(Int, String)的元組”。

你可以把任意順序的類型組合成一個元組,這個元組可以包含所有類型。只要你想,你可以創建一個類型為(Int, Int, Int)或者(String, Bool)或者其他任何你想要的組合的元組。

你可以將一個元組的內容分解(decompose)成單獨的常量和變量,然后你就可以正常使用它們了:

let (statusCode, statusMessage) = http404Error

println("The status code is \(statusCode)")

// 輸出 "The status code is 404"

println("The status message is \(statusMessage)")

// 輸出 "The status message is Not Found"

如果你只需要一部分元組值,分解的時候可以把要忽略的部分用下劃線(_)標記:

let (justTheStatusCode, _) = http404Error

println("The status code is \(justTheStatusCode)")

// 輸出 "The status code is 404"

此外,你還可以通過下標來訪問元組中的單個元素,下標從零開始:

println("The status code is \(http404Error.0)") // 輸出 "The status code is 404"

println("The status message is \(http404Error.1)") // 輸出 "The status message is Not Found"

你可以在定義元組的時候給單個元素命名:

let http200Status = (statusCode: 200, description: "OK")

給元組中的元素命名后,你可以通過名字來獲取這些元素的值:

println("The status code is \(http200Status.statusCode)") // 輸出 "The status code is 200"

println("The status message is \(http200Status.description)") // 輸出 "The status message is OK"

作為函數返回值時,元組非常有用。一個用來獲取網頁的函數可能會返回一個(Int, String)元組來描述是否獲取成功。和只能返回一個類型的值比較起來,一個包含兩個不同類型值的元組可以讓函數的返回信息更有用。請參考[函數參數與返回值(06_Functions.html#Function_Parameters_and_Return_Values)。

注意:元組在臨時組織值的時候很有用,但是并不適合創建復雜的數據結構。如果你的數據結構并不是臨時使用,請使用類或者結構體而不是元組。請參考類和結構體

二 ,swif運算符

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容

  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,350評論 1 27
  • Swift 簡介 查看Swift當前版本 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X...
    mian小爬閱讀 359評論 0 1
  • ---------------------Swift簡介----------------------一、神馬是Sw...
    android_ls閱讀 1,023評論 1 8
  • Swift 是一門開發 iOS, macOS, watchOS 和 tvOS 應用的新語言。然而,如果你有 C 或...
    XLsn0w閱讀 930評論 2 1
  • 太久沒寫了 甚至找不到在哪寫文章了 開學不到一個禮拜怎么感覺這么吃不消呢 有必要把自己搞得這么累么 呵呵呵呵
    CC愛MM閱讀 96評論 0 0