本節(jié)大概花你2分鐘。
聲明
常量的值一旦設(shè)定就不能改變,用let來聲明常量。
變量的值可以隨意更改,用var來聲明變量。
簡單點說就是如果你的代碼中有不需要改變的值,請使用let關(guān)鍵字將它聲明為常量。只將需要改變的值用var聲明為變量。
可以在一行中聲明多個常量或者多個變量,用逗號隔開,例如:
var x = 0.0, y = 0.0, z = 0.0
在 Swift 開發(fā)中可以同時定義多個變量,下面定義中所有變量都是 Double 類型:
var a,b,c:Double
這種聲明在 REPL 模式中會出錯,你需要為它們賦值初始化才能下一步,不過一般開發(fā)并不會跑到 REPL 模式中就是了。
類型標(biāo)注
和其他語言一樣類型標(biāo)注可以說明常量或者變量中要存儲的值的類型。
例如字符串類型的變量:
var testMessage: String
現(xiàn)在我們可以給這個變量賦值了:
testMessage = "Hello"
同樣,我們可以在一行中定義多個同樣類型的變量,用逗號分割,并在最后一個變量名之后添加類型標(biāo)注:
var red, green, blue: Double
但是話又說回來,就算你在聲明常量或者變量的時候沒有指定類型也沒關(guān)系,因為Swift會自己判斷,只要你賦了一個初始值,Swift可以自動推斷出這個常量或者變量的類型。
也就是說你只管確定這是常量還是變量就可以了。
如果你想了解這是怎么回事請參考類型安全和類型推斷,但對于初學(xué)者而言我們暫時避開這個問題,后面我們會再和這些內(nèi)容遇見的。
常量和變量的命名
Swift可以使用Unicode字符命名常量和變量:
let π = 3.14159
let 你好 = "你好世界"
let ?? = "dogcow"
比如像上面這樣的做法都是可以的,你甚至可以用一個滑稽表情作為常量或變量的名字。
雖然看起來可以亂取名字,但實際上還是有限制的,比如你不能使用數(shù)學(xué)符號、箭頭、保留的或者非法的Unicode碼位、連線與制表符等來為常量與變量命名。通俗地講就是不要出現(xiàn)數(shù)學(xué)運算符號、箭頭這種亂七八糟的東西。
也不能以數(shù)字開頭,但是可以在常量與變量名的其他地方包含數(shù)字。因為如果出現(xiàn)了以數(shù)字開頭為名的常量與變量會導(dǎo)致混亂啊,例如你定義一個常量let 2333=6666,然后用2333運算,天知道你這是表示2333還是6666。
輸出常量和變量
好了,我們終于可以向屏幕輸出點什么了,先定義一個變量:
var myAction = "_(:з」∠)_"
print(myAction)
輸出的自然是_(:з」∠)_這個表情,沒什么問題吧。print()是一個用來輸出一個或多個值到適當(dāng)輸出區(qū)的全局函數(shù)。就當(dāng)是內(nèi)置的打印機(jī)吧~
除了直接輸出整個變量還可以把變量插入到某個地方:
/* 這是一個
多行的
注釋。 */
var myName = "猴子" // 定義名字為猴子
print(myName)
print("這是寫給\(myName)看的Swift入門教程。")
// 輸出"這是寫給猴子看的Swift入門教程。"
Swift用字符串插值(string interpolation)的方式把常量名或者變量名當(dāng)做占位符加入到長字符串中,Swift 會用當(dāng)前常量或變量的值替換這些占位符。將常量或變量名放入圓括號中,并在開括號前使用反斜杠將其轉(zhuǎn)義。
哦,對了,其實上面的例子中我還告訴了大家怎么注釋。
還有最后一點我們就可以結(jié)束這課了,Swift對于每句編程語言后面分號的書寫并不嚴(yán)格,就是愛寫不寫。
但是如果你在同一行寫兩句編程語句當(dāng)然要加分號了。
let cat = "??"; print(cat)
好了到此結(jié)束,下一節(jié)是基本數(shù)據(jù)類型。
練習(xí)題
1. 下面哪些不是Swift合法標(biāo)識符:
A. 2variable
B. variable2
C. _whatavariable
D. _3_
答案:A
解釋:不能是數(shù)字開頭。
2.下面哪些不是Swift關(guān)鍵字的:
A.If B.then
C.Goto D.while
E.Case F.__COLUMN__
G.Where H.Class
答案:BH
解釋:其中F是關(guān)鍵字,這種大寫加下劃線的關(guān)鍵字還有:COLUMN、FILE、FUNCTION和LINE。Class不屬于關(guān)鍵字,是因為首字母大寫了,類的關(guān)鍵字是class,首字母不大寫。
3. 下列代碼,哪行有錯誤:
let _Hello1 = "Hello"
_Hello1 = "Hello, World" A
print(_Hello1) B
var _Hello2 = "Hello"
_Hello2 = "Hello, World" C
print(_Hello2) D
答案:A
解釋:A
有編譯錯誤,_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
解釋:以上都是正確的,除此之外提醒一點,Swift是可以在注釋中嵌套注釋的,類似:
/*
Xxxx
/* xxxx */
Xxxx
*/