程式語言就是一門語言,而語言是拿來溝通,所以程式語言就是拿來跟電腦溝同的語言。我們學習高階的程式語言是從語法開始,看過所有的基本語法後才可以繼續後續的學習,當然每個人的學習方法不同,也不見得要依照我得方法開始。只是對於初學者而言,語法就是基礎,你總不會還沒學會英文字母,就開始看原文書吧!!
官方手冊需要花時間好好看,但不用一次就背起來,他就像字典一樣是工具書,而工具書就是當你忘了怎麼寫的時候,可以翻閱。這跟學英文一樣,你懂的單字夠多就好,不是非得把英文字典全部背起來~~
var 宣告變數
let 宣告常數 (佔用記憶體空間較少,如果確定該值不會變動,盡量設為常數)
let str = “hello world”
var value = 0
value=10
value = ”十“ //會編譯錯誤
常數,顧名思義,除了在宣告時要給予初始值外,之後也無法在變更。
變數,宣告時不一定要給值,之後也可以任意修改。
PS: = 左右兩側要平衡 (等號左邊有幾個空白,右邊就有幾個。沒有空白就都沒有)
但是swift很貼心的在變數或常數宣告時可以省略資料型態,其型態會由等號右邊的值來決定,以上例來說常數 str 已設定為字符串型態,value 已設定為整數型態。
swift語法在資料型態的要求上非常嚴謹,已經宣告的變數不可以再放入不同的資料型態,上例的value已設定為整數型態,不可再放入字串。
let zero = 0
zero沒有指定資料型態,會依據等號右邊的0,自動設置為Int型態,如果將值改為0.0,就會變成Float型態,當然也可以一開始就設定型態,Ex:
let one: Float = 1.0
小數點資料型態有兩種 :
Double 小數點類型數字(顯示位數較多)
Float 小數點類型數字(顯示位數較少)
字串資料型態 :String
字元資料型態 :Character
字元型態只能儲存一個字,字串是由一系列字元組合而成。swift語言中都是以雙引號作為開始與結尾,Ex:
let one: Character = "1"
let str: String = "hello"
字串可以在雙引號中使用()來插入一個變數或常數,並且不用管型別問題,直接轉換為字串型別,Ex:
let age = 13
let str = "他\(age)歲"
Str內容為 「他13歲」
Swift語言中有三種類型:For-In迴圈、While迴圈與Repeat-While迴圈。
for i in 1...10 {
print(i)
}
//印出整數數字 1、2、3、4...10
var oddnumber = 1
while oddnumber < 10 {
print(oddnumber)
oddnumber += 2
}
//印出數字1、3、5、7、9
var oddnumber = 1
repeat {
print(oddnumber)
oddnumber += 2
} while oddnumber < 10
//印出數字1、3、5、7、9
由於條件檢查是在程式碼最後面,因此使用Repeat-While迴圈時,至少會先執行一次。
使用let宣告一個整數陣列,該陣列內容就固定了,只能讀取不能修改,此外可透過索引值做單一讀取
let numbers = [3, 5, 9, 14, 18]
let value = numbers[1] //value = 5
若改使用var宣告陣列,就可以修改內容
var names = ["Tom", "Julia", "Charlie"]
names[0] = "John" //names被替換成 ["John", "Julia", "Charlie"]
也可以利用append()函數將資料加到陣列最後面,也可以用insert()函數將資料插入到指定位置
names.append("Henry")
//names = ["John", "Julia", "Charlie", "Henry"]
names.insert("Terry", at: 1)
//names = ["John", "Terry", "Julia", "Charlie", "Henry"]
屬性count用來取得陣列中有幾筆資料
let count = names.count //count = 5
remove(at: )用來刪除特定索引值的資料,removeAll()來刪除陣列中所有資料
names.remove(at: 2) //"Julia" 被刪除了
names.removeAll() //names內資料全部刪除
集合主要拿來儲存不需要強調索引值或鍵值的資料。就是不需要將資料放入特定位址,也不需要刪除特定位址的資料。
要確認集合中是否包含某個特定值,可以使用contains()函數
var car: Set = ["方向盤", "輪子", "車門", "車窗"]
car.contains("引擎") //false
將資料加入集合中,可以使用insert()。若要將資料刪除,可以使用remove()。要刪除集合中所有資料,使用空集合[]即可。
PS:新加入集合的資料並不會放在集合最後面「位置」,因為集合本身是沒有索引值或鍵值去存放資料,所以也沒有所謂「位置」的區別。
car.insert("天窗")
//car = "車門", "方向盤", "車窗", "天窗", "輪子"
let standardcar = car.remove("天窗")
//car = "車門", "方向盤", "車窗", "輪子"
car = []
//集合內資料全部清空
集合共有四種集合運算
圖片摘自蘋果公司開發者網站
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [2, 4, 6, 8, 10]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7, 11]
oddDigits.intersection(evenDigits)
// []
oddDigits.union(evenDigits)
// [10, 2, 9, 4, 5, 7, 6, 3, 1, 8]
oddDigits.subtracting(singleDigitPrimeNumbers)
// [9, 1]
oddDigits.symmetricDifference(singleDigitPrimeNumbers)
// [2, 9, 1, 11]
字典簡單講就是索引值可以自訂的陣列。字典的資料型態是Dictionary < Key , Value >,透過Key來存取特定的Value
var location: [String: String] = ["TPE": "Taipei", "TXG": "Taichung", "TNN": "Tainan"]
location["TPE"] //返回"Taipei"
刪除字典中資料,方法如下:
使用 removeValue ( forKey : )來從字典裡移除特定鍵值對(Key-Value)。如果字典存在要刪除的鍵值對,會刪除該鍵值對並且返回該鍵值對的值(value),如果鍵值對不存在則返回 nil
location["TPE"] = nil //刪除特定Key
let removedValue = location.removeValue(forKey: "TXG") //刪除"TXG",且removedValue = "Taichung"
location = [:] //刪除全部資料
part I 就先到這告一個段落,明天繼續其他語法~
Hi 樓主安安,請問我可以在集合裡面放兩個一模一樣的值嗎?
比方說像是陣列我們可以:
["標籤1", "標籤1"]
那集合可以嗎?
可以放進去,但是重複的內容也是算同一個
舉例來說
let evenDigits: Set = [2, 2, 4, 6, 8, 10]
code在集合中寫入兩個2,但是重複內容會被視為同一值,因此執行evenDigits.count 他還是認定集合內只有5個內容