swift _day1

swift _day1

未知知識(shí)點(diǎn)記錄

定義

var 聲明變量
let 聲明常量.官方解釋(一個(gè)常量的值,在編譯的時(shí)候,并不需要有明確的值,但是你只能為它賦值一次。也就是說(shuō)你可以用常量來(lái)表示這樣一個(gè)值:你只需要決定一次,但是需要使用很多次。)


常量或者變量的類型必須和你賦給它們的值一樣。然而,聲明時(shí)類型是可選的,聲明的同時(shí)賦值的話,編譯器會(huì)自動(dòng)推斷類型。

let numberInt = 10    //在賦值時(shí)系統(tǒng)推斷為int類型的
 let numberDouble = 10.0 //同上
 let numberDoubleAlso : Double = 10 //程序員定義為double類型

轉(zhuǎn)換

在swift中值永遠(yuǎn)不會(huì)被隱式轉(zhuǎn)換為其他類型。如果你需要把一個(gè)值轉(zhuǎn)換成其他類型,請(qǐng)顯式轉(zhuǎn)換。

        let age: Int = 10
        let name : String = "十萬(wàn)伏特"
        let iam = name + String(age) //顯示轉(zhuǎn)換
        //更加簡(jiǎn)單的轉(zhuǎn)換字符串的方式
        let iamString = "我叫\(zhòng)(name)"

字典和數(shù)組

使用方括號(hào)[]來(lái)創(chuàng)建數(shù)組和字典,并使用下標(biāo)或者鍵(key)來(lái)訪問(wèn)元素。

       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語(yǔ)句中,條件必須是一個(gè)布爾表達(dá)式——這意味著像if score { ... }這樣的代碼將報(bào)錯(cuò),而不會(huì)隱形地與 0 做對(duì)比,但是在十萬(wàn)伏特中又有了另外一種形式。*你可以一起使用if和let來(lái)處理值缺失的情況。有些變量的值是可選的。一個(gè)可選的值可能是一個(gè)具體的值或者是nil,表示值缺失。在類型后面加一個(gè)問(wèn)號(hào)來(lái)標(biāo)記這個(gè)變量的值是可選的。*  **注意在類型后面加一個(gè)問(wèn)號(hào)來(lái)標(biāo)記這個(gè)變量的值是可選的**

let name : String? = "kyrie"
if let otherName = name {
print("name - (otherName)")
} else {
print("name = nil")
}
```
當(dāng)name是有值的時(shí)候,if判斷的結(jié)果是true。

switch
十萬(wàn)伏特中的switch非常好用,switch支持任意類型的數(shù)據(jù)以及各種比較操作——不僅僅是整數(shù)以及測(cè)試相等。

let point = (x:1, y:2)
        switch point {
        case (1,3):
            print("null")
        case (_,2): //第一個(gè)就不用進(jìn)行判斷了
            print("YES")
        case let newPoint where newPoint.x == 1: //x是1的話就執(zhí)行
            print("yes")
        default: //default不能缺少
            print("default")
        }
        ```

**while、for循環(huán)**  
你可以在循環(huán)中使用..<來(lái)表示范圍,也可以使用傳統(tǒng)的寫法,兩者是等價(jià)的,使用..<創(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來(lái)聲明一個(gè)函數(shù),使用名字和參數(shù)來(lái)調(diào)用函數(shù)。使用->來(lái)指定函數(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ù)**  
___
返回值是一個(gè)函數(shù)  

func func3() -> (Int -> Int) {
func func4(number: Int) -> Int {
return number;
}
return func4
}

參數(shù)是一個(gè)函數(shù)    
   //參數(shù)
    func func6(list: [Int], func5Use: String -> String) {
    }
    func func5(str: String) ->String {
        return str
    }
    func6([6,7,8], func5Use: func5)
**閉包:**函數(shù)實(shí)際上是一種特殊的閉包,你可以使用{}來(lái)創(chuàng)建一個(gè)匿名閉包。使用in將參數(shù)和返回值類型聲明與閉包函數(shù)體進(jìn)行分離。  
      
    var bibao:((Int , Int) -> Int)
    
    func funcblock() {
        bibao = ({
            (num1: Int, num2: Int) -> Int in
            return num1 > num2 ? num1 :num2
            
        })
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容