1.簡介
-
聲明變量:var value = variableValue
var x = 12 //Int var y = 89.7 //Double var c = "a" //字符 var str = "Hello,world!" //字符串 var a : Double = 9 // a=>9.0 顯示聲明 var b : Int? = 89 //可選Int 可能為Int,可為nil var f : Float! = 199.9 //確定Float類型
-
聲明常量:let constant = constantValue
- 聲明方式和變量一樣,聲明以后常量數值不能改變
-
類型轉換:
var x : Int var y : Double = 899.89 x = Int(y)//899
var x = 128 var s = String(x) //強制轉換為字符串
-
數值表示:
-
二進制:
let binarySystem = 0b1100111 //二進制0b -
八進制:
let octalSystem = 0o73102 // 八進制0o -
十六進制:
let heaxadecimalSystem = 0xA6B123 //十六進制0x -
科學計數法:
let scientificNotation = 4.34e-10 //科學計數法 -
分割顯示:
let bigNumber = 500_000_000 //較大數值支持 _ 分割顯示
-
二進制:
-
布爾類型:
-
聲明:
var isTrue : Bool = 100 > 50
isTrue = true
isTrue = false
-
聲明:
-
字符串:
-
聲明:
var str : String = "" //輸出空白
var str : String //錯誤的
var str : String? //正確的 -
拼接:
var strC = strA + strB + "一氣化三清" -
比較兩個字符傳是否相等:
var isStringSame = strA == strB //結果是Bool類型
-
聲明:
-
使用類型別名typealias:
typealias DoubleV = Double
var a : DoubleV = 88.9 -
元組(Tuple):由一個或多個變量、常量或字面量[等號左邊的數值]組成的單個實體
-
聲明:
var myDreamCar = (2016,"Audi","A8") //如果訪問不存在的元組成員則顯示錯誤信息。一旦聲明后不能再次更改成員的個數或者類型。 - 訪問成員:
myDreamCar.0 = 2017
-
聲明:
-
可選類型 在聲明的類型后面加 ? 就是可選類型,任何類型都可以聲明為可選的。
- 為什么要有可選類型?舉個例子:
let chooseTypeStr : String = "abc" //聲明一個常量字符串為"abc"
var chooseTypeInt : Int ? = Int(chooseTypeStr) //很明顯,此時chooseTypeStr中的"abc"不能被強制轉換為相應的Int數值。那么如果不加 ? 就會出現錯誤。加上 ? 后,chooseTypeInt就可以為nil,這樣就不會報錯。
print(chooseTypeInt) //輸出為nil
- 為什么要有可選類型?舉個例子:
2.集合
-
數組:數組中的元素必須相同
-
常量數組:
let array = ["張三","李四","王五"]
array[0] = "張老三" //錯誤的 let 為常量不可以修改 -
變量數組:
var array = ["張三","李四","王五"]
array[0] = "張老三" //var 可修改元素
array = ["張三","李四","王五","趙六"] //var 可修改長度 -
顯示聲明:
var array : [String] = ["上單","打野","中單","輔助","ADC"] //要聲明用于存儲特定類型值的數組 需要在數組名后面加上冒號 在架上放在方括號 [] 的類型名 -
增長數組:
array.append("最佳第六人") //在數組尾部添加元素
array3 = array1 + array2 + ["弟弟","哥哥"] //順序是先加 = 左邊的 然后 右邊的 -
替換 和 刪除:
var array : [String] = ["AA","BB","CC","DD","EE","FF"]
替換:array[3] = "GG"
刪除最后一個元素:
array.removeLast()
刪除第一個元素:
array.removeFirst()
刪除指定下標元素:
array.removeAtIndex(3)
刪除尾部幾個元素:
array.removeLast(2)
刪除首部幾個元素:
array.removeFirst(2)
刪除全部元素:
array.removeAll() //array = [] 也可以
插入到指定位置:
array.insert("ZZ",atIndex:0) //插入到原數組的0元素之前
二維數組:
var array = [array1,array2,array3] -
空數組:需要指定存儲元素的類型。
var array : Array<Int> = []
var array = [ Int ] ( )
-
常量數組:
-
字典:采用健值對來存儲數據,字典條目的排列順序取決于使用Xcode的版本,總是采用可最大限度提高檢索和訪問效率來排列的。
-
聲明:
var dictionary = ["low":1_000,"middle":5_000,"high":10_000]
var dictionary : [String : Int] = ["low":1_000,"middle":5_000,"high":10_000] -
查找條目:
var element = dictionary["middle"] //element 的類型為可選類型 ? 因為訪問的key不一定存在,不存在時放回nil。從字典返回的值總是可選的,但不能將字典條目設置為nil。 -
添加條目:
dictionary["long"] = 200_000 -
更新條目:
dictionary["high"] = 90_000 -
刪除條目:
dictionary["low"] = nil //這里也可以解釋為什么不能將字典的條目設置為nil。
dicitionary.removeValueForKey("high") //等同上面 -
清空字典:
dictionary.removeAll()
dictionary = [ : ]
dictionary.removeAll(keepCapacity:Bool) //清空字典,是否保留空間。 -
創建空字典:
var emptyDictionary = Dictionary<String,Double>() //需要說明字典的健值對的類型 -
字典中的字典:
var dictionary = ["d1":dictionary1,"d2":dictionary2,"d3":dictionary3]
-
聲明:
-
數組與字典:
由字典組成的數組:
array = [dictionary1,dictionary2,dictionary3]由數組組成的字典:
dictionary = ["One":dictionary1,"Two":dictionary2,"Three":dictionary3]-
迭代:
for value in array {
print("value = (value)")
} //數組for (key : value) in dictionary { print(key," = ",value) } //字典
3.流程控制
-
for循環:
-
swift:
var loopCounter : Int = 0
for loopCounter in 1...10 { //閉區間
print("value = ",loopCounter)
} -
老式for循環:
for loopCounter = 0; loopCounter < 6; loopCounter +=1 {
print("value at index (loopCounter) is (array[loopCounter])")
}
-
swift:
-
if語句:
-
用于判斷:
if a == b { //可使用 ==,!=,<,>,<=,>=
print("a等于b")
} else {
print("a不等于b")
}
-
用于判斷:
-
switch語句:
-
使用switch語句必須加上default。在swift的switch中執行一個case之后,自動break。
switch tree { //tree 是 String
case "楊樹" :
var str : String = "風兒吹" //在這里聲明新的變量,不需要加 { } 花括號
print("")
case "松樹" :
print("")
case "柳樹" "榕樹" : //多個
print("")
case 2...10 :
print("也可以使用區間") //可以使用 ...
default :
print("")
-
使用switch語句必須加上default。在swift的switch中執行一個case之后,自動break。
-
while語句:
while:
var base = 2
var target = 1_000
var value = 0
while value < target {
value += base
print(value)
}repeat - while: =>do - while
repeat {
value -= base
}while value > 0
4.函數
-
格式:func name (parameters) -> return type
func funcName(parameterName : Double) -> Double { //被調用時,一個函數的返回值可以被忽略
var result : Double
result = (((parameterName - 22) * 5) / 9)
return result
}
func funcSecond() {
print("無參數,無返回值")
}
func canChangeParameter(str : String,values : Double...) { //可變參數 只允許在函數的最后一個參數中包涵省略號,指出它是一個可變參數,其他參數都只能引用單個量
var add : Double = 0.0
for value in values { //我的理解是傳進來可變參數是數組
add += value
}
//調用函數
var testValue = 88.2
var testResult = funcName(testValue)canChangeParameter("可變參數",values:12.3,44,3,879.65)
-
返回函數的函數:
//函數1
func funcNumberOne (value : Double ) -> Double {
return value + 100.0
}
//函數2
func funcNumberTwo (value : Double ) -> Double {
return value + 200.0
}
//返回函數的函數
func funcAll (str : Double) -> (Double) -> Double {
if str == "One" {
return funcNumberOne
}
return funcNumberTwo
}
//調用
let useFuncOne = funcAll("One") //也可以是變量var
let useFuncTwo = funcAll("Two")let doubleOne = useFuncOne(34.2) let doubleTwo = useFuncTwo(55.8) print(doubleOne) //輸出134.2 print(doubleTwo) //輸出255.8
有誤之處,敬請指正,不勝感激