*常量變量的定義*
let 常量:常量的值一旦設(shè)定就不能改變
?var 變量:變量的值可以隨便改變
*常量跟變量的使用規(guī)則*
?為了保證數(shù)據(jù)的安全性盡量先使用 let ,只有需要改變的時候才使用var
*常量定義格式*
聲明符號 常量名稱:類型標(biāo)注
let number: Int
特點: 一旦設(shè)定就不能改變
let number: Int = 10
注意:不能賦值
//number = 20
*定義變量格式*
* 聲明符號 變量名稱: 類型標(biāo)注
* var number: Int
* 特點: 變量的值可以隨便改變
* 注意: 一般來說你很少需要寫類型標(biāo)注,如果你在聲明常量或者變量的時候賦了一個初始值挂谍,Swift可以推斷出一個變量或者常量的類型
var number: Int = 10
number = 20
*類型推斷*
* 編譯器可以在編譯代碼的時候自動推斷出表達(dá)式的類型砾赔。(其它語言是沒有類型推斷)
* 原理很簡單疾党,只要檢查你賦的值即可
* 如果沒有指定表達(dá)式的類型瓣蛀,也沒有賦予初始值浑度,編譯器會報錯(type? annotation missing in pattern)
let number1 = 10
var number2 = 20.8
注意點:如果沒有指定表達(dá)式的類型胖秒,也沒有賦予初始值,編譯器會報錯
var number3: Int
number3 = 30
*類型安全*
* Swift是一個類型安全(type safe)的語言慕的,它會在編譯你的代碼時候進(jìn)行類型檢查(type checks)阎肝,并把不匹配的類型標(biāo)記為錯誤。這可以讓你在開發(fā)的時候今早發(fā)現(xiàn)并修復(fù)錯誤
* swift 對數(shù)據(jù)類型要求異常嚴(yán)格业稼,swift中任何時候盗痒,都不會做‘隱式轉(zhuǎn)換’,如果需要對不同類型數(shù)據(jù)進(jìn)行計算低散,必須顯示類型轉(zhuǎn)換
let number = 10
let number1 = 20.9
let sum = number + number1? // 錯誤示范
let sum = Double(number) + number1 // 正確示范
let sum = number + Int(number1) // 正確示范
* 注意:
* 結(jié)合數(shù)字類常量和變量不同于結(jié)合數(shù)字類字面量俯邓,字面量9可以直接和字面量3.14直接相加,因為數(shù)字字面量本身沒有明確的類型熔号,它們的類型只在編譯器需要求值的時候被推測
* double 和 CGFloat也需要轉(zhuǎn)換
> 字面量之間運算時可以是不同類型
let sum = 10.8 + 30
> CGFloat / Double
let number = 10.6
let point = CGPoint(x:10.9,y:30.8)
let temp = point.x
let sum = Double(temp) + number
*變量和常量的命名*
* 你可以用任何你喜歡的字符作為常量和變量的名字稽鞭,包括Unicode字符
* 常量和變量名不能包含數(shù)學(xué)符號,箭頭引镊,保留的(或者非法的)Unicode的碼位朦蕴,連線與制表符
* 也不能以數(shù)字開頭,但是可以在常量與變量名的其它地方包含數(shù)字
* . . .和C和OC一樣弟头,no zoo no die
* 注意:
* 如果你需要使用與swift保留關(guān)鍵字相同的名稱作為常量或者變量名吩抓,你可以使用反引導(dǎo)(’Int’)將關(guān)鍵字包圍的方式將其作為名字使用
* 無論如何,你應(yīng)當(dāng)避免使用關(guān)鍵字作為常量或變量名赴恨。除非你別無選擇
let ?? = “dog”
let 'Int' = 520
*元祖*
* 元祖(tuples)把多個值組合成一個復(fù)合值
* 將多個相同或者不同類型的值用一個小括號括起來就是一個元祖
* 元祖內(nèi)的值可以是任意類型疹娶,并不要求是相同類型
* 作為函數(shù)返回值時,元祖非常有用
* 注意:
* 元祖在臨時組織值的時候很有用伦连,但是并不適合創(chuàng)建復(fù)雜的數(shù)據(jù)結(jié)構(gòu)雨饺,如果你的數(shù)據(jù)結(jié)構(gòu)并不是臨時使用,請使用類或者結(jié)構(gòu)體而不是元祖
let tuples = (10,30.9)
> 通過下標(biāo)取出值(相當(dāng)于oc數(shù)組取值,根據(jù)下標(biāo)取)
tuples.0
tuples.1
> 通過指定元素名稱取值
let tuples1 = (xxx:888,ooo:9.99)
tuples1.xxx
tuples1.ooo
> 分解元素
let (intValue,DoubleValue) = (66,5.20)
intValue
DoubleValue