歡迎來到IOS迷你教程!
在本系列中,您將學習Swift編程語言的一些基礎知識。
對于本教程,需要準備Xcode 10,這是macOS的標準開發(fā)環(huán)境,點擊獲取。如果使用Xcode9或更低版本,本教程中的一些代碼將無法按預期運行。
入門
編寫代碼的工具稱為集成開發(fā)環(huán)境(IDE)。Xcode是您的IDE,其中包括Playground。
您將在本系列中使用Playground來練習編碼。
創(chuàng)建一個Playground
當您打開Xcode時:
如果您沒有看到此屏幕,則很可能是因為未選中Xcode啟動時顯示此窗口選項。您也可以按Command-Shift-1打開屏幕。也可以從菜單欄中單擊窗口 ? 歡迎使用Xcode。
在歡迎屏幕上,您可以通過點擊“開始Playground”快速跳入Playground。Xcode將為您提供一系列模板。
選擇Blank模板,然后單擊Next。Xcode現(xiàn)在會要求您為Playground命名并選擇一個位置來保存它。命名任意。
單擊“ 創(chuàng)建”。然后Xcode會為您呈現(xiàn)Playground,如下:
新的Playground不完全是空的,有一些基本的入門代碼可以讓你前進。別擔心 - 你很快就會知道這段代碼意味著什么。
Playground概述
乍一看,Playground可能看起來像一個相當奇特的文本編輯器。
上面的屏幕截圖:
- 源代碼編輯器:這是您編寫Swift代碼的區(qū)域。它非常像文本編輯器,如Notepad或TextEdit。
- 結(jié)果側(cè)欄:此區(qū)域顯示執(zhí)行代碼時的結(jié)果。
- 執(zhí)行控制:Playground默認自動執(zhí)行,您可以編寫代碼并立即查看輸出。此控件允許您再次執(zhí)行Playground。按住??按鈕可以在自動執(zhí)行和手動執(zhí)行模式之間切換。
- 活動查看器:顯示Playground的狀態(tài)。
- 面板控件:三個面板的切換開關(顯示或隱藏)。
Playground從上往下執(zhí)行代碼。每次更改代碼時,Playground都會重新執(zhí)行所有操作。
Playground執(zhí)行后,Xcode會在右邊的結(jié)果側(cè)欄顯示相應行的結(jié)果。
代碼注釋,算術運算,常量和變量是任何語言的基本構(gòu)建塊,Swift也不例外,下面來一探究竟。
代碼注釋
與其他編程語言一樣,Swift允許您使用注釋來記錄一些說明。編譯器會忽略這些文本。
單行注釋:
//這是評論。它沒有被執(zhí)行。
多行注釋:
/*這也是一個評論。
很多......
很多行。*/
打印
查看代碼操作的結(jié)果。在Swift中,您可以使用print命令來實現(xiàn)。
print將任何你想要輸出的東西輸出到調(diào)試區(qū)域,也稱控制臺。
例如:
print(“Hello,Swift Apprentice reader!”)
這將向調(diào)試區(qū)輸出一條消息:
您可以用上圖中的向下箭頭按鈕隱藏或顯示調(diào)試區(qū)域。
算術運算
你可以在app中找到很多算術運算:從計算微博上“贊”的數(shù)量到計算按鈕或窗口的正確大小或位置,數(shù)字無處不在!
簡單運算
即上學時學到的四個算術運算:加法,減法,乘法和除法。對于這些簡單的操作,Swift使用以下運算符:
- 加:
+ - 減:
- - 乘:
* - 除:
/
使用方式:
2 + 6
10 - 2
2 * 4
24 / 3
每一行都是一個表達式。表達式具有值。在這些情況下,所有四個表達式都具有相同的值:8。
在您的Playground中,您可以在右側(cè)欄(結(jié)果側(cè)欄)中看到這些表達式的值:
可以刪除運算符兩邊的空格:
2+6
刪除空格是一個可有可無的事情,但不能用混合樣式:
2+6 // OK
2 + 6 // OK
2 +6 // ERROR
2+ 6 // ERROR
運算符兩側(cè)的空格只是為了更易讀。
小數(shù)
上面的所有操作都使用了整數(shù),代碼中叫Int。但是,并非每個數(shù)字都是整數(shù)。
例如:
22 / 7
結(jié)果是數(shù)字3。這是因為,如果你只在表達式中使用整數(shù),那么Swift會將結(jié)果也作為整數(shù)。這種情況下,結(jié)果為向下取舍的一個整數(shù)。
您可以更改為以下內(nèi)容來告訴Swift使用小數(shù):
22.0 / 7.0
這一次,結(jié)果是3.142857142857143,正如預期的那樣。
余數(shù)運算
也稱為模運算。即求余數(shù)。例如,10模3等于1。
余數(shù)運算符是%符號:
28 % 10
運算符優(yōu)先順序
很多時候,會使用多個運算符:
((8000 / (5 * 10)) - 32) >> (29 % 5)
合理的使用括號,可以讓團隊其他人看清楚 - 也包括你自己 。例如:
350 / 5 + 2
等于72(350除以5,加2)還是50(350除以7)?
Swift使用和數(shù)學相同的推理,并通過運算符優(yōu)先級來實現(xiàn)這一點。除法運算符(/)的優(yōu)先級高于加法運算符(+),因此,在示例中,代碼首先執(zhí)行除法運算。
如果你想讓Swift首先進行加法運算,可以使用括號:
350 / (5 + 2)
優(yōu)先規(guī)則和數(shù)學課學到的一模一樣。
數(shù)學函數(shù)
Swift還具有廣泛的數(shù)學函數(shù)供您使用。你永遠不知道什么時候你需要拉出一些三角函數(shù),特別是當你是一個專業(yè)的Swifter并編寫那些復雜的游戲時!
注意:并非所有這些函數(shù)都是Swift的一部分。有一些是由操作系統(tǒng)(OS)提供。不要刪除最開始的import語句,否則Xcode會告訴您無法找到這些函數(shù)。
例如:
sin(45 * Double.pi / 180)
// 0.7071067811865475
cos(135 * Double.pi / 180)
// -0.7071067811865475
它們分別計算正弦和余弦。請注意兩者Double.pi是如何使用的,這是一個Swift常量,即3.141592653589793。。。
還有:
(2.0).squareRoot() // 也可以用 sqrt(2)
// 1.414213562373095
這將計算2的平方根。
還有:
max(5, 10)
// 10
min(-5, -10)
// -10
它們分別計算兩個數(shù)字的最大值和最小值。
也可以組合用:
max(sqrt(2), Double.pi / 2)
// 1.570796326794897
命名數(shù)據(jù)
簡單的說,計算機編程就是操縱數(shù)據(jù)。
在Swift代碼中,您可以為每個數(shù)據(jù)提供一個名稱,以便之后用它。該名稱帶有一個類型關鍵字,表示數(shù)據(jù)類型,例如文本,數(shù)字或日期。
接下來您將學習一些基本類型。
常量
let number: Int = 10
這聲明了一個名為number的常量,它是類型的Int。然后,它將常量的值設置為10。
注意:回想一下運算符,這是等號運算符=,稱為賦值運算符。
該Int類型的常量只可以存儲整數(shù)。存儲小數(shù)的方式如下:
let pi: Double = 3.14159
這類似于Int常量,除了名稱和類型不同。這次,常量是一個Double--可以存儲高精度小數(shù)。
還有一個為Float浮點類型,它的存儲精度低于的Double。Double的精度大約是其兩倍,這就是為什么Double被優(yōu)先使用的原因。Float占用的內(nèi)存少于Double,但通常情況下,數(shù)字的內(nèi)存使用不是一個大問題,你會看到Double在大多數(shù)地方使用。
一旦聲明了常量,就無法更改其數(shù)據(jù)。例如:
let number: Int = 10
number = 0
將產(chǎn)生錯誤:
Cannot assign to value: 'number' is a 'let' constant
在Xcode中,您會看到這種方式的錯誤:
常量對于不會改變的值很有用。例如,如果您要對飛機進行建模并需要跟蹤可用的座位總數(shù),則可以使用常量。
你甚至可以使用常量來表示某個人的年齡。盡管他們的年齡會隨著每個生日而改變,但您可能只關心他們在這個特定時刻的年齡。
變量
通常,您希望更改的數(shù)據(jù)。例如,如果您通過存款和取款跟蹤銀行帳戶余額,則可以使用變量而不是常量。
當您知道需要更改某些數(shù)據(jù)時,應使用變量來表示該數(shù)據(jù)而不是常量。如下:
var variableNumber: Int = 42
使用let聲明常量,使用var聲明變量。
一旦聲明了變量,只要類型保持不變,您就可以自由地將其更改為任何您想要的變量。例如,要更改上面聲明的變量,您可以這樣做:
variableNumber = 0
variableNumber = 1_000_000
要更改變量,只需為其指定一個新值即可。
注意:在Swift中,您可以選擇使用下劃線來使更大的數(shù)字更易于閱讀。下劃線的數(shù)量和位置隨意。
看一下Playground的結(jié)果側(cè)邊欄。當您將上面的代碼鍵入Playground時,您會看到variableNumber每行的當前值:
結(jié)果側(cè)邊欄將顯示每行(如果存在)的結(jié)果。
使用有意義的名字
為變量和常量選擇有意義的名稱,可以使您的代碼更容易閱讀。
一個好名字描述了變量或常量所代表的含義。以下是一些好名字的例子:
personAgenumberOfPeoplegradePointAverage
通常,壞名稱根本就不具有描述性。以下是一些不良名稱的例子:
atempaverage
這是為了確保您在以后閱讀時理解變量或常量所指的內(nèi)容。不要錯誤地認為你有一個絕對可靠的記憶!在計算機編程中,通常一兩天后再次看自己的代碼時便會忘記它的作用。通過為變量和常量提供直觀,精確的名稱,使自己更容易理解。
在Swift中,使用駱駝命名法。對于變量和常量,請遵循以下規(guī)則:
- 以小寫字母開頭。
- 如果名稱由多個單詞組成,請將它們連接在一起并以大寫字母開始每個后續(xù)單詞。
- 如果這些單詞中的一個是縮寫,后續(xù)則大寫出整個縮寫(例如,
sourceURL和urlDescription)。
在Swift中,您可以使用全部的Unicode字符(中文,顏表情等)。例如:
var ????: Int = -1
不推薦用。
遞增和遞減
var counter: Int = 0
counter += 1
// counter = 1
counter -= 1
// counter = 0
counter開始為0。遞增1后其值為1,再遞減1后其值為0。
上面的代碼是以下的簡寫:
var counter: Int = 0
counter = counter + 1
// counter = 1
counter = counter - 1
// counter = 0
類似地,*=和/=運算符分別用于乘法和除法:
var counter: Int = 10
counter *= 3 // Same as counter = counter * 3
// counter = 30
counter /= 2 // Same as counter = counter / 2
// counter = 15







