1.使用 let來聲明一個常量,用 var來聲明一個變量。
常量的值在編譯時并不要求已知,但是你必須為其賦值一次。這意味著你可以使用常量來給一個值命名,然后一次定義多次使用。
常量或者變量必須擁有和你賦給它們的值相同的類型。不過,你并不需要總是顯式地寫出類型。在聲明一個常量或者變量的時候直接給它們賦值就可以讓編譯器推斷它們的類型。
如果初始值并不能提供足夠的信息(或者根本沒有提供初始值),就需要在變量的后邊寫出來了,用冒號分隔。
let implicitInteger = 70
let implicitDouble = 70.0 //默認是double類型
let explicitDouble: Double = 70
let explicitFloat : Float = 70.0
變量值絕對不會隱式地轉(zhuǎn)換為其他類型。如果你需要將一個值轉(zhuǎn)換為不同的類型,需要使用對應的類型顯示地聲明。如下列例子中的String(width)
let label = "The width is "
let width = 94
let widthLabel = label + String(width)
String(width)可以簡寫成(width)
為字符串使用三個雙引號( """ )來一次輸入多行內(nèi)容
只要每一行的縮進與末尾的引號相同,這些縮進都會被移除。比如說:
//被移除縮進
let quotation = """
I said "I have \(apples) apples."
And then I said "I have \(apples + oranges) pieces of fruit."
"""
//這個縮進不會被移除
let quotation = """
I said "I have \(apples) apples."
And then I said "I have \(apples + oranges) pieces of fruit."
"""
2.使用方括號( [])來創(chuàng)建數(shù)組或者字典,并且使用方括號來按照序號或者鍵訪問它們的元素。
注意:方括號可以用創(chuàng)建字典了
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
使用初始化器語法來創(chuàng)建一個空的數(shù)組或者字典。
let emptyArray = [String]()
let emptyDictionary = [String: Float]()
如果類型信息能被推斷,那么你就可以用[]來表示空數(shù)組,用[:]來表示空字典。舉個栗子,當你給變量設置新的值或者傳參數(shù)給函數(shù)的時候。
shoppingList = []
occupations = [:]
3.使用 if和 switch來做邏輯判斷,使用 for-in, for, while,以及 repeat-while來做循環(huán)。使用圓括號把條件或者循環(huán)變量括起來不再是強制的了,不過仍舊需要使用花括號來括住代碼塊。
ps:可以不要小括號了,但是大括號必須需要
在一個 if語句當中,條件必須是布爾表達式——這意味著比如說 if score {...}將會報錯,不再隱式地與零做計算了。
ps: 注意這里不再默認 :隱式地與零做比較了
Switch 選擇語句支持任意類型的數(shù)據(jù)和各種類型的比較操作——它不再限制于整型和測試相等上。
刪除default 會報錯 Switch must be exhaustive 表示switch 語句不夠完整
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper")://注意 let 可以用在模式里來指定匹配的值到一個常量當中。下面就指到了常量x里面
print("Is it a spicy \(x)?")
default:
print("Everything tastes good in soup.")
}
在執(zhí)行完 switch 語句里匹配到的 case 之后,程序就會從 switch 語句中退出。執(zhí)行并不會繼續(xù)跳到下一個 case 里,所以完全沒有必要顯式地在每一個 case 后都標記 break 。
ps :switch 里面break全部省略掉了。
你可以使用 for-in來遍歷字典中的項目,這需要提供一對變量名來儲存鍵值對。一對變量名就可以了,不用指定類型
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 99, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (_, numbers) in interestingNumbers {
//上面這句話可以改寫成for (kind, numbers) in都是可行,因為這個變量從沒有用過,所以可以使用下劃線
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
使用 ..<來創(chuàng)建一個不包含最大值的區(qū)間,使用 ... 來創(chuàng)造一個包含最大值和最小值的區(qū)間。
var total = 0
for i in 0..<4 {
total += i
print(i)
}
for i in 0...4 {
total += i
print(i)
}