swift _day1
未知知識點記錄
定義
var 聲明變量
let 聲明常量.官方解釋(一個常量的值建芙,在編譯的時候,并不需要有明確的值戏自,但是你只能為它賦值一次壁酬。也就是說你可以用常量來表示這樣一個值:你只需要決定一次,但是需要使用很多次辖所。)
常量或者變量的類型必須和你賦給它們的值一樣惰说。然而,聲明時類型是可選的缘回,聲明的同時賦值的話助被,編譯器會自動推斷類型。
let numberInt = 10 //在賦值時系統(tǒng)推斷為int類型的
let numberDouble = 10.0 //同上
let numberDoubleAlso : Double = 10 //程序員定義為double類型
轉(zhuǎn)換
在swift中值永遠不會被隱式轉(zhuǎn)換為其他類型切诀。如果你需要把一個值轉(zhuǎn)換成其他類型揩环,請顯式轉(zhuǎn)換。
let age: Int = 10
let name : String = "十萬伏特"
let iam = name + String(age) //顯示轉(zhuǎn)換
//更加簡單的轉(zhuǎn)換字符串的方式
let iamString = "我叫\(zhòng)(name)"
字典和數(shù)組
使用方括號[]來創(chuàng)建數(shù)組和字典幅虑,并使用下標(biāo)或者鍵(key)來訪問元素丰滑。
let arr = ["my", "name", "is", "kyrie"]
let dic = ["name" : "kyrie", "age", "23"]
print(arr[1] + dic["name"]!)
//空數(shù)組 空字典
let emptyArr = [String]()
let emptyDic = [String : String]()
if and switch 等
for in循環(huán)
forin數(shù)組
let arr: [Int] = [1, 2, 3, 4, 5]
for number in arr {
print(number)
}
```
___
forin字典
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
___
**if判斷**
在if語句中,條件必須是一個布爾表達式——這意味著像if score { ... }這樣的代碼將報錯倒庵,而不會隱形地與 0 做對比,但是在十萬伏特中又有了另外一種形式褒墨。*你可以一起使用if和let來處理值缺失的情況。有些變量的值是可選的擎宝。一個可選的值可能是一個具體的值或者是nil郁妈,表示值缺失。在類型后面加一個問號來標(biāo)記這個變量的值是可選的绍申。* **注意在類型后面加一個問號來標(biāo)記這個變量的值是可選的**
let name : String? = "kyrie"
if let otherName = name {
print("name - (otherName)")
} else {
print("name = nil")
}
```
當(dāng)name是有值的時候噩咪,if判斷的結(jié)果是true。
switch
十萬伏特中的switch非常好用极阅,switch支持任意類型的數(shù)據(jù)以及各種比較操作——不僅僅是整數(shù)以及測試相等胃碾。
let point = (x:1, y:2)
switch point {
case (1,3):
print("null")
case (_,2): //第一個就不用進行判斷了
print("YES")
case let newPoint where newPoint.x == 1: //x是1的話就執(zhí)行
print("yes")
default: //default不能缺少
print("default")
}
```
**while、for循環(huán)**
你可以在循環(huán)中使用..<來表示范圍筋搏,也可以使用傳統(tǒng)的寫法仆百,兩者是等價的,使用..<創(chuàng)建的范圍不包含上界奔脐,如果想包含的話需要使用...
for var i = 0 ; i < 10 ; i++ {
print(i)
}
for i in 1...10 {
/**
* i <= 10
/
print(i)
}
for i in 1..<10 {
/*
* i < 10
*/
print(i)
}
###函數(shù)和閉包
**函數(shù):**使用func來聲明一個函數(shù)俄周,使用名字和參數(shù)來調(diào)用函數(shù)。使用->來指定函數(shù)返回值髓迎。
func greet(name: String, day: String) -> String {
return "Hello (name), today is (day)."
}
greet("Bob",day: "Tuesday")
函數(shù)的參數(shù)和返回值可以是數(shù)組字典元祖等峦朗。**由于函數(shù)本身就是第一等類型,所以函數(shù)也可以作為函數(shù)的返回值和參數(shù)**
___
返回值是一個函數(shù)
func func3() -> (Int -> Int) {
func func4(number: Int) -> Int {
return number;
}
return func4
}
參數(shù)是一個函數(shù)
//參數(shù)
func func6(list: [Int], func5Use: String -> String) {
}
func func5(str: String) ->String {
return str
}
func6([6,7,8], func5Use: func5)
**閉包:**函數(shù)實際上是一種特殊的閉包竖般,你可以使用{}來創(chuàng)建一個匿名閉包甚垦。使用in將參數(shù)和返回值類型聲明與閉包函數(shù)體進行分離。
var bibao:((Int , Int) -> Int)
func funcblock() {
bibao = ({
(num1: Int, num2: Int) -> Int in
return num1 > num2 ? num1 :num2
})
}