本節(jié)大概花你2分鐘。
聲明
常量的值一旦設(shè)定就不能改變钢颂,用let
來(lái)聲明常量钞它。
變量的值可以隨意更改,用var
來(lái)聲明變量殊鞭。
簡(jiǎn)單點(diǎn)說(shuō)就是如果你的代碼中有不需要改變的值遭垛,請(qǐng)使用let
關(guān)鍵字將它聲明為常量。只將需要改變的值用var
聲明為變量操灿。
可以在一行中聲明多個(gè)常量或者多個(gè)變量锯仪,用逗號(hào)隔開(kāi),例如:
var x = 0.0, y = 0.0, z = 0.0
在 Swift 開(kāi)發(fā)中可以同時(shí)定義多個(gè)變量趾盐,下面定義中所有變量都是 Double 類(lèi)型:
var a,b,c:Double
這種聲明在 REPL 模式中會(huì)出錯(cuò)庶喜,你需要為它們賦值初始化才能下一步,不過(guò)一般開(kāi)發(fā)并不會(huì)跑到 REPL 模式中就是了救鲤。
類(lèi)型標(biāo)注
和其他語(yǔ)言一樣類(lèi)型標(biāo)注可以說(shuō)明常量或者變量中要存儲(chǔ)的值的類(lèi)型久窟。
例如字符串類(lèi)型的變量:
var testMessage: String
現(xiàn)在我們可以給這個(gè)變量賦值了:
testMessage = "Hello"
同樣,我們可以在一行中定義多個(gè)同樣類(lèi)型的變量本缠,用逗號(hào)分割斥扛,并在最后一個(gè)變量名之后添加類(lèi)型標(biāo)注:
var red, green, blue: Double
但是話又說(shuō)回來(lái),就算你在聲明常量或者變量的時(shí)候沒(méi)有指定類(lèi)型也沒(méi)關(guān)系丹锹,因?yàn)镾wift會(huì)自己判斷稀颁,只要你賦了一個(gè)初始值,Swift可以自動(dòng)推斷出這個(gè)常量或者變量的類(lèi)型楣黍。
也就是說(shuō)你只管確定這是常量還是變量就可以了匾灶。
如果你想了解這是怎么回事請(qǐng)參考類(lèi)型安全和類(lèi)型推斷,但對(duì)于初學(xué)者而言我們暫時(shí)避開(kāi)這個(gè)問(wèn)題锡凝,后面我們會(huì)再和這些內(nèi)容遇見(jiàn)的粘昨。
常量和變量的命名
Swift可以使用Unicode字符命名常量和變量:
let π = 3.14159
let 你好 = "你好世界"
let ?? = "dogcow"
比如像上面這樣的做法都是可以的,你甚至可以用一個(gè)滑稽表情作為常量或變量的名字窜锯。
雖然看起來(lái)可以亂取名字张肾,但實(shí)際上還是有限制的,比如你不能使用數(shù)學(xué)符號(hào)锚扎、箭頭吞瞪、保留的或者非法的Unicode碼位、連線與制表符等來(lái)為常量與變量命名驾孔。通俗地講就是不要出現(xiàn)數(shù)學(xué)運(yùn)算符號(hào)芍秆、箭頭這種亂七八糟的東西惯疙。
也不能以數(shù)字開(kāi)頭,但是可以在常量與變量名的其他地方包含數(shù)字妖啥。因?yàn)槿绻霈F(xiàn)了以數(shù)字開(kāi)頭為名的常量與變量會(huì)導(dǎo)致混亂啊霉颠,例如你定義一個(gè)常量let 2333=6666
,然后用2333
運(yùn)算荆虱,天知道你這是表示2333
還是6666
蒿偎。
輸出常量和變量
好了,我們終于可以向屏幕輸出點(diǎn)什么了怀读,先定義一個(gè)變量:
var myAction = "_(:з」∠)_"
print(myAction)
輸出的自然是_(:з」∠)_
這個(gè)表情诉位,沒(méi)什么問(wèn)題吧。print()
是一個(gè)用來(lái)輸出一個(gè)或多個(gè)值到適當(dāng)輸出區(qū)的全局函數(shù)菜枷。就當(dāng)是內(nèi)置的打印機(jī)吧~
除了直接輸出整個(gè)變量還可以把變量插入到某個(gè)地方:
/* 這是一個(gè)
多行的
注釋苍糠。 */
var myName = "猴子" // 定義名字為猴子
print(myName)
print("這是寫(xiě)給\(myName)看的Swift入門(mén)教程。")
// 輸出"這是寫(xiě)給猴子看的Swift入門(mén)教程啤誊。"
Swift用字符串插值(string interpolation)的方式把常量名或者變量名當(dāng)做占位符加入到長(zhǎng)字符串中岳瞭,Swift 會(huì)用當(dāng)前常量或變量的值替換這些占位符。將常量或變量名放入圓括號(hào)中坷衍,并在開(kāi)括號(hào)前使用反斜杠將其轉(zhuǎn)義寝优。
哦,對(duì)了枫耳,其實(shí)上面的例子中我還告訴了大家怎么注釋乏矾。
還有最后一點(diǎn)我們就可以結(jié)束這課了,Swift對(duì)于每句編程語(yǔ)言后面分號(hào)的書(shū)寫(xiě)并不嚴(yán)格迁杨,就是愛(ài)寫(xiě)不寫(xiě)钻心。
但是如果你在同一行寫(xiě)兩句編程語(yǔ)句當(dāng)然要加分號(hào)了。
let cat = "??"; print(cat)
好了到此結(jié)束铅协,下一節(jié)是基本數(shù)據(jù)類(lèi)型捷沸。
練習(xí)題
1. 下面哪些不是Swift合法標(biāo)識(shí)符:
A. 2variable
B. variable2
C. _whatavariable
D. _3_
答案:A
解釋?zhuān)翰荒苁菙?shù)字開(kāi)頭。
2.下面哪些不是Swift關(guān)鍵字的:
A.If B.then
C.Goto D.while
E.Case F.__COLUMN__
G.Where H.Class
答案:BH
解釋?zhuān)浩渲蠪是關(guān)鍵字狐史,這種大寫(xiě)加下劃線的關(guān)鍵字還有:COLUMN痒给、FILE、FUNCTION和LINE骏全。Class不屬于關(guān)鍵字苍柏,是因?yàn)槭鬃帜复髮?xiě)了,類(lèi)的關(guān)鍵字是class姜贡,首字母不大寫(xiě)试吁。
3. 下列代碼,哪行有錯(cuò)誤:
let _Hello1 = "Hello"
_Hello1 = "Hello, World" A
print(_Hello1) B
var _Hello2 = "Hello"
_Hello2 = "Hello, World" C
print(_Hello2) D
答案:A
解釋?zhuān)篈
有編譯錯(cuò)誤楼咳,_Hello1是常量熄捍,不能二次賦值烛恤。
4. 下面有關(guān)Swift注釋使用正確的是?
A.
if x > 1 {
//注釋1
} else {
return false //注釋2
}
B.
//let _Hello1 = "Hello"
//_Hello1 = "Hello, World"
//print(_Hello1)
C.
/*
let _Hello1 = "Hello"
_Hello1 = "Hello, World"
println(_Hello1)
*/
D.
/**
let _Hello1 = "Hello"
_Hello1 = "Hello, World"
println(_Hello1)
*/
答案:ABCD
解釋?zhuān)阂陨隙际钦_的余耽,除此之外提醒一點(diǎn)缚柏,Swift是可以在注釋中嵌套注釋的,類(lèi)似:
/*
Xxxx
/* xxxx */
Xxxx
*/