轉(zhuǎn)載自http://wanwu.tech/2017/03/04/numbers/
現(xiàn)在你已經(jīng)做好了編程的前期工作,我們正式開始吧指蚁。
這一章中骨望,你將學習怎么樣用Swift表達數(shù)字,其中你還將學到注釋欣舵,表達式擎鸠,運算符,常數(shù)和變量等知識缘圈。
就像嬰兒學數(shù)數(shù)一樣劣光,我們也要開始學習數(shù)字了。
新建一個Playground糟把,開始我們的學習绢涡。
Hello World
進入Playground之后,你會看到以下代碼遣疯,下面我們所有代碼請寫在這些代碼之后雄可。至于這些代碼什么意思,你也會很快知道的缠犀,不要著急数苫。
//: Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
注釋
想象一下你進入了一個未知的世界,不知身在何處辨液。突然虐急,在一面墻上有這么一段話:
//: Playground - noun: a place where people can play
// 請盡情的玩吧
有沒有感覺頓時輕松了好多。
其實滔迈,這句話就是你新建的Playground自動生成的一段單行注釋止吁。這段注釋告訴了你這里的基本信息被辑。語法結構就是雙斜杠//
,后面接你想表達的內(nèi)容敬惦。
當你發(fā)現(xiàn)這樣的信息對你很有幫助的時候盼理,你可能也想留一段類似的注釋給后來人,或者未來的你俄删,告你那個人他在這里將會看到的東西榜揖。但是如果你想表達更多的內(nèi)容的話,你可以這樣寫:
//: Playground - noun: a place where people can play
// 請盡情的玩吧抗蠢,這里真的很好玩
// 你可以學到如何使用Swift來編程
也可以這樣寫為多行注釋:
/*
: Playground - noun: a place where people can play
請盡情的玩吧举哟,這里真的很好玩
你可以學到如何使用Swift來編程
*/
多行注釋的語法是用/*...*/
包裹你的注釋內(nèi)容。
至于你想怎樣寫迅矛,并沒有嚴格的要求妨猩。但是記住,注釋可以讓別人或者未來的你更好的理解你的代碼秽褒,請習慣在合適的地方寫合適的注釋壶硅。
輸出打印
這里的打印并不是說要用打印機打印文件,而是把信息輸出到一個外圍設備销斟,比如說你的屏幕上庐椒。
在你的Playground中輸入:
print("Hello, world")
觀察右側(cè)結果查看欄,是不是有:
"Hello, world\n"
這個就是輸出打印的內(nèi)容了蚂踊。不過约谈,最后那個\n
是什么?自己先百度下犁钟?
今后棱诱,我們會用下面的形式表達代碼及其輸出:
print("Hello, world") // => "Hello, world\n"
有了打印能力,你將能更好的調(diào)試你的代碼涝动,方便查看變量值等信息迈勋。
數(shù)字與四則運算
我們可以嘗試輸出數(shù)字,例如:
print(1)
print(1.1)
那我想進行數(shù)值運算怎么辦呢醋粟?我們直接使用加減乘除就可以了靡菇,比如:
1+1 // => 2
4-3 // => 1
4*7 // => 28
6/2 // => 3
上面每行都是一個表達式,表達式有一個值米愿。
但是上面的表達式太緊湊了厦凤,看起來太累,我們可以這樣寫:
1 + 1
4 - 3
4 * 7
6 / 2
是不是看起來舒服一點呢吗货?不過如果只有運算符的一側(cè)有空格泳唠,是不符合語法規(guī)范的狈网,如:
1 +1 // 錯
4- 3 // 錯
整數(shù)與浮點數(shù)
嘗試下面的表達式:
5 / 2 // => 2
為什么呢宙搬?計算機也會算錯嗎笨腥?
這是因為Swift認為5和2都是整數(shù),那么這個表達式的值也應該是一個整數(shù)勇垛,Swift只取這個表達式值的整數(shù)部分脖母,也就是2。
那如果我想要計算出帶有小數(shù)的更精確的值呢闲孤?我們可以這樣:
5.0 / 2.0 // => 2.5
我們這就告訴了Swift谆级,這兩個數(shù)是帶有小數(shù)的,也就是浮點數(shù)讼积,計算精度會提高肥照。
余數(shù)
如果我想知道整數(shù)除法運算的余數(shù)呢?這個運算可以叫取余勤众,或者叫取模舆绎。
5 % 2 // => 1
運算符優(yōu)先級
在一個表達式中可能包含多個有不同運算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對象们颜;由于表達式有多種運算吕朵,不同的運算順序可能得出不同結果甚至出現(xiàn)錯誤運算錯誤,因為當表達式中含多種運算時窥突,必須按一定順序進行結合努溃,才能保證運算的合理性和結果的正確性、唯一性[1]阻问。
很嚇人梧税?我覺得也是。
不過不用怕称近,其實就和你上學的時候?qū)W的四則運算法則差不多贡蓖,更多其他的規(guī)則,我寫在這里煌茬,難度你會背嗎斥铺?用到了自己去查吧。比如這里:Swift 運算符
數(shù)學公式
Swift也提供給你了一些常用的數(shù)學公式坛善,比如正余弦晾蜘,平方根,最值等運算:
sin(45 * Double.pi / 180) //正弦 => 0.7071067811865475
cos(0) // 余弦 => 1
sqrt(4) // 平方根 => 2
max(10, 4) // 最大值 => 10
min(10, 4) // 最小值 => 4
寫有意義的的代碼
目前為止眠屎,我們并沒有覺得我們的代碼有什么了不起的功能剔交。但是將來,我們會用其他一樣簡單的語句改衩,搭建出各類App岖常。
為了使我們以后更方便的使用自己的代碼,我們會給這些數(shù)據(jù)賦予有意義的名字葫督。同時竭鞍,這些名字是和某種數(shù)據(jù)類型關聯(lián)在一起的板惑,比如上文中我們遇到的整數(shù)就是一種數(shù)據(jù)類型。
有意義的名字
觀察下面代碼:
let numberApple: Int = 10
let numberOrange: Int = 8
let pi: Double = 3.14159
var numberWorker: Int = 5
var height: Double = 1.82
如果不認識英語偎快,可以查字典冯乘。
你能大概猜出來每句話什么意思嗎?應該不難是嗎晒夹?比如第一句是“蘋果數(shù)量為10”等等裆馒。
假設你看到了下面的代碼:
let a: Int = 10
let b: Int = 8
let c: Double = 3.14159
var d: Int = 5
var e: Double = 1.82
你能看出來每句話什么意思嗎?第一句是“a等于10”丐怯?那么你告訴我喷好,“a“是什么?也許你會說读跷,我可以加注釋绒窑,比如寫成這樣子的就好了:
let a: Int = 10 // number of apple
let b: Int = 8 // number of Orange
let c: Double = 3.14159 // pi
var d: Int = 5 //number of worker
var e: Double = 1.82 // height
那你為什么不直接寫成最開始的那種形式呢?
請記滋蛲ぁ:任何情況下些膨,起一個有意義的名字!
如果你的代碼可以做到不使用任何注釋钦铺,就能讓別人大致看懂订雾,是不是就具有了很好的可讀性?
起名格式建議
注意我們的名字:numberApple矛洞。有沒有發(fā)現(xiàn)number小寫洼哎,Apple首字母大寫。
Swift語言建議沼本,對于常量和變量來說:
- 首字母小寫
- 如果名字由幾個單詞組成噩峦,第一個單詞后的單詞首字母大寫(駝峰格式)。
- 如果有一個單詞是縮寫抽兆,那么整個縮寫使用相同大小寫识补。(比如urlDescription和sourceURL)
等等,什么是常量和變量辫红?
常量和變量
常量凭涂,值不可變。
變量贴妻,值可變切油。
我們還是看剛才的代碼,我們來一步步分析:
let numberApple: Int = 10
我們試著這樣讀出來:let the number of apple, which is of type Int, to be 10名惩。(令蘋果數(shù)量為10澎胡,而且數(shù)據(jù)類型為整型)
這句話聲明了一個常量,其值為10。這個常量的名字是numberApple攻谁。
let指定了這個值為常量稚伍。
:Int指定這個值數(shù)據(jù)類型為整型。
那么類似的
let numberOrange: Int = 8
聲明一個名為numberOrange的常量巢株,數(shù)據(jù)類型為整型(即上文所說的整數(shù))槐瑞,賦值為8熙涤。
let pi: Double = 3.14159
聲明一個名為pi的常量阁苞,數(shù)據(jù)類型為雙精度浮點型(即上文所說的浮點數(shù)的一種),賦值為3.14159祠挫。
關于數(shù)據(jù)類型的更多細節(jié)那槽,請參考下一章,或者網(wǎng)絡資源:Swift 數(shù)據(jù)類型
類似的等舔,下面代碼骚灸,與上面不同的僅僅是let變成了var
var numberWorker: Int = 5
var height: Double = 1.82
var開頭,則說明這個值是一個變量慌植。
我們試著改變常量和變量的值甚牲。
numberApple = 3 // 錯
numberOrange = 5 // 錯
pi = 2.2 // 錯
numberWorker = 6 // 沒問題
height = 1.44 // 沒問題
上面的“=”是賦值運算符
通過點擊代碼前面的紅點,我們可以看到后面紅底黑字的提示說明錯誤原因蝶柿,下面白底黑字也是同樣的錯誤原因丈钙,同時還有藍底白字的修改建議。
我們發(fā)現(xiàn)交汤,一旦聲明了一個常量雏赦,那么它的值是不能改變的,但是變量可以芙扎。所以上面建議我們將numberApple的聲明由常量變?yōu)樽兞浚?/p>
let numberApple: Int = 10
變?yōu)椋?/p>
var numberApple: Int = 10
通常星岗,如果你認為一個值是不會變的,那么將其聲明為常量戒洼。比如地球的半徑俏橘,成年人的身高等。
如果是會變的圈浇,那么聲明為變量敷矫。比如你的年齡,公司人數(shù)等汉额。
遞增和遞減
嘗試下面代碼:
var counter: Int = 0
counter += 1 // => counter = 1
counter -= 1 // => counter = 0
開始曹仗,counter為0,通過使用遞增操作符+=
蠕搜,counter變?yōu)榱?怎茫。又通過遞減操作符-=
,變?yōu)榱?。其實轨蛤,上面代碼等同于:
var counter: Int = 0
counter = counter + 1 // => counter = 1
counter = counter - 1 // => counter = 0
類似的蜜宪,試試 *=
和 /=
有什么效果吧。
如果你和大多數(shù)人一樣懶的話祥山,我相信你會喜歡上這幾種操作符的圃验。
總結
- 注釋的兩種方法:
//
和/*...*/
- 一定要有一個有意義的名字
- 數(shù)據(jù)類型
- 運算符
- 常量和變量
下一步
我們知道了怎么表達有兩個蘋果,但是怎么表達我的名字叫小明呢缝呕?