3. 數(shù)字

轉(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認為52都是整數(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ù)人一樣懶的話祥山,我相信你會喜歡上這幾種操作符的圃验。

總結

  1. 注釋的兩種方法:///*...*/
  2. 一定要有一個有意義的名字
  3. 數(shù)據(jù)類型
  4. 運算符
  5. 常量和變量

下一步

我們知道了怎么表達有兩個蘋果,但是怎么表達我的名字叫小明呢缝呕?






  1. http://www.runoob.com/swift/swift-operators.html ?

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澳窑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子供常,更是在濱河造成了極大的恐慌摊聋,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栈暇,死亡現(xiàn)場離奇詭異麻裁,居然都是意外死亡,警方通過查閱死者的電腦和手機源祈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門煎源,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人香缺,你說我怎么就攤上這事手销。” “怎么了赫悄?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵原献,是天一觀的道長。 經(jīng)常有香客問我埂淮,道長姑隅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任倔撞,我火速辦了婚禮讲仰,結果婚禮上,老公的妹妹穿的比我還像新娘痪蝇。我一直安慰自己鄙陡,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布躏啰。 她就那樣靜靜地躺著趁矾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪给僵。 梳的紋絲不亂的頭發(fā)上毫捣,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天详拙,我揣著相機與錄音,去河邊找鬼蔓同。 笑死饶辙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的斑粱。 我是一名探鬼主播弃揽,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼则北!你這毒婦竟也來了矿微?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤咒锻,失蹤者是張志新(化名)和其女友劉穎冷冗,沒想到半個月后守屉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惑艇,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年拇泛,在試婚紗的時候發(fā)現(xiàn)自己被綠了滨巴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俺叭,死狀恐怖恭取,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熄守,我是刑警寧澤蜈垮,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站裕照,受9級特大地震影響攒发,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晋南,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一惠猿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧负间,春花似錦偶妖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至董虱,卻和暖如春扼鞋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工藏鹊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留润讥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓盘寡,卻偏偏與公主長得像楚殿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竿痰,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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

  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發(fā)的 API 和技術的脆粥。這個信息可能會改變, 根據(jù)這個文...
    無灃閱讀 4,299評論 1 27
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,802評論 1 10
  • 本章將會介紹 模塊和源文件訪問級別訪問控制語法自定義類型子類常量变隔、變量膘螟、屬性方妖、下標構造器協(xié)議擴展泛型類型別名位運算...
    寒橋閱讀 881評論 0 2
  • ? 雙生? 又是一個稀里嘩啦的雨天,雷吉睜開睡眼稀火,看見龍尼正騎在艾瑪身上鲜棠。 雷吉沒有起身肌厨。如果是別人這么做,他會莫...
    陳穩(wěn)閱讀 362評論 0 2
  • 一條古老的街道 掛滿鈴鐺的樹 是兩排擎向天空的手掌 枝葉端莊典雅垂下長發(fā) 那是皇宮的婢女 眼睛狹長似有一絲嫵媚 端...
    念今塵閱讀 565評論 0 51