Swift 中的分號
本教程屬於 Swift 系列。 在 Swift 中,分號是可選的。 您可以將語句寫在不同行上,並且不需要添加分號: let list = ["a", "b", "c"] var a = 2 您可以添加分號,但在這種情況下並沒有任何實際意義: let list = ["a", "b", "c"]; var a = 2; 但是,如果您想在同一行上寫多個語句,那麼您需要添加分號: var a = 2; let b = 3
本教程屬於 Swift 系列。 在 Swift 中,分號是可選的。 您可以將語句寫在不同行上,並且不需要添加分號: let list = ["a", "b", "c"] var a = 2 您可以添加分號,但在這種情況下並沒有任何實際意義: let list = ["a", "b", "c"]; var a = 2; 但是,如果您想在同一行上寫多個語句,那麼您需要添加分號: var a = 2; let b = 3
本教程屬於 Swift 系列 Swift 提供 Bool 類型,可以有兩個值:true 和 false。 var done = false done = true 布林值在條件控制結構中特別有用,比如 if 陳述式或三元條件運算符: var done = true if done == true { //code }
此教程屬於 Swift 系列。 在 Swift 中,數字擁有兩種主要類型:Int 和 Double。 Int 是一個沒有小數點的整數。 Double 是一個帶有小數點的數字。 它們都使用 64 位元,在現代使用 64 位元的電腦上,以及在 32 位元平台上使用 32 位元。 它們可以存儲的值的範圍取決於所使用的平台,並可以通過每種類型的 int 屬性獲取: 此外,除了 Int 和 Double,我們還有許多其他數值類型,主要用於與以前構建的需要與 C 或 Objective-C 交互的 API 進行交互,你必須知道它們: Int8 是一個佔用 8 位元的整數 Int16 是一個佔用 16 位元的整數 Int32 是一個佔用 32 位元的整數 Int64 是一個佔用 64 位元的整數 UInt8 是一個佔用 8 位元的無符號整數 UInt16 是一個佔用 16 位元的無符號整數 UInt32 是一個佔用 32 位元的無符號整數 UInt64 是一個佔用 64 位元的無符號整數 UInt 與 Int 相似,但是它是無符號的,範圍從 0 到 Int....
本教程屬於 Swift 系列。 元組用於將多個值分組成一個集合。例如,我們可以聲明一個包含 String 和 Int 值的變量 dog: let dog: (String, Int) 然後我們可以用名字和年齡來初始化它們: let dog: (String, Int) = ("Roger", 8) 但是與任何其他變量一樣,類型可以在初始化期間推斷出來: let dog = ("Roger", 8) 您可以使用命名元素: let dog = (name: "Roger", age: 8) dog.name //"Roger" dog.age //8 一旦定義了一個元組,您可以以以下方式將其解構到單個變量中: let dog = ("Roger", 8) let (name, age) = dog 如果您只需要獲取其中一個值,可以使用特殊的底線關鍵字忽略其他值: let dog = ("Roger", 8) let (name, _) = dog 元組是一個非常有用的工具,可以滿足各種需求。 最明顯的一個需求是以簡潔的方式分組相似的數據。 另一個需求是從函數返回多個項目。函數只能返回單個項目,因此元組是一種方便的結構。 另一個元組所允許的有用功能是交換元素: var a = 1 var b = 2 (a, b) = (b, a) // a == 2 // b == 1
本教程屬於 Swift 系列的一部分 你的程式碼通常是有組織地以函數的方式進行組織的。 使用 func 關鍵字聲明一個函數: func bark() { print("woof!") } 函數可以分配給結構、類和列舉,這種情況下我們稱之為方法。 使用函數名稱來呼叫函數: bark() 函數可以返回一個值: func bark() -> String { print("woof!") return "barked successfully" } 你可以將其賦值給一個變數: let result = bark() 函數可以接受參數。每個參數都有一個名稱和一個類型: func bark(times: Int) { for index in 0..<times { print("woof!") } } 參數的名稱對於函數內部而言是內部名。 在調用函數時,我們使用參數名稱來傳遞其值: bark(times: 3) 當說起這個函數時,我們不稱其為 bark(),而稱之為 bark(times:repeat:)。 這是因為我們可以有多個具有相同名稱但不同參數集的函數。 您可以通過使用 _ 關鍵字來避免使用標籤: func bark(_ times: Int, repeatBark: Bool) { //...函數體 } 這樣您就可以以以下方式調用它: bark(3, repeatBark: true) 在 Swift 和 iOS API 中,通常第一個參數沒有標籤,而其他參數則被標記。...
本教程屬於 Swift 系列教程 列舉是一種將不同選項分組在一個共同名稱下的方式。 示例: enum Animal { case dog case cat case mouse case horse } 這個 Animal 列舉現在是一個類型。 這種類型的值只能是列出的其中一個選項。 如果你定義一個 Animal 類型的變數: var animal: Animal 你可以稍後使用這種語法決定要給它賦予哪個值: var animal: Animal animal = .dog 我們可以在 switch 控制結構中使用列舉: enum Animal { case dog case cat case mouse case horse } let animal = Animal.dog switch animal { case .dog: print("dog") case .cat: print("cat") default: print("another animal") } 列舉的值可以是字符串、字符或數字。 您還可以在一個線上定義一個列舉: enum Animal { case dog, cat, mouse, horse } 您還可以在列舉中添加類型聲明,並為每個選項分配該類型的值:...
本教程屬於 Swift 系列教程 if 語句是執行條件檢查的最常用方式。我們使用 if 關鍵字,後面跟著一個布爾表達式,再後面是一個包含在條件為真時執行的代碼塊: let condition = true if condition == true { // 條件為真時執行的代碼 } 如果條件為假,則執行 else 塊: let condition = true if condition == true { // 條件為真時執行的代碼 } else { // 條件為假時執行的代碼 } 你可以選擇使用括號將條件表達式括起來,如果你喜歡的話: if (condition == true) { // ... } 同樣地,你也可以直接寫: if condition { // 條件為真時執行 } 或者 if !condition { // 條件為假時執行 } Swift 與許多其他語言的一個區別是它防止由於錯誤地進行賦值而不是比較而引起的錯誤。這意味著你不能這樣做: if condition = true { // 程序無法編譯 } 原因是賦值運算符不返回任何值,但 if 條件必須是一個布爾表達式。
你在檔案中編寫軟體。 一個簡單的程式可能只會存在於單一個檔案中,但是複雜的程式則會寫在多個檔案之中。 Swift 提供了一種將多個檔案分組的方法,稱為 模組。 模組可以幫助我們做兩件事情:代碼複用和代碼封裝。 你只需將特定的功能寫一次,然後將其放入一個模組中,就可以在不同的地方和項目中引用它。 封裝意味著這個庫可以在內部執行很多複雜的事情,但是只暴露出一小部分給外部使用。 你可以通過 import 來開始使用模組。 如果你曾經寫過 import SwiftUI 或者 import UIKit 那麼你已經使用過模組了。像 UIKit 和 SwiftUI 這樣的框架就是模組。 當你引入一個模組後,該模組聲明為 public 的部分在你的應用程式代碼內都是可見的。 模組之間可以相互引用,當這種情況發生時,你就自動擁有了對那些模組的訪問權限。 例如,SwiftUI 引入了 Foundation,所以你不需要寫 import SwiftUI import Foundation 你只需要第一行。 你的應用程式本身也是一個模組。 Swift 本身也是一個模組。你不需要手動 import Swift,因為它會自動為你處理。
本教程屬於 Swift 系列 在 Swift 中,一切皆為物件。即使我們將數值 8 賦予變數 age,這個 8 也是一個物件。 在某些語言中,物件是一種特殊型別。但在 Swift 中,一切皆為物件,這導致了 Swift 的一個特點:每個值都可以「接收訊息」。 每種型別可以有多個與之相關的函式,我們稱之為方法。 舉例來說,對於數值 8,我們可以呼叫其 isMultiple 方法,以檢查該數字是否為另一數字的倍數: 字串值有另外一組方法。 一個型別也可以有實例變數。例如,字串型別有一個名為 count 的實例變數,可用於獲取字串中的字符數量: Swift 有三種不同的物件型別,我們稍後會詳細介紹:類別(classes)、結構體(structs)和列舉型別(enums)。 它們之間非常不同,但有一個共同點:對於物件型別,我們可以新增方法,並且對於任何型別的任何值,我們都可以發送訊息。
本文是關於 Swift 的新系列文章的開始 Swift 程式語言是由蘋果於 2014 年推出的,並且是與所有蘋果操作系統系列一起使用的官方語言: iOS、iPadOS、watchOS、macOS、tvOS。 Swift 是一個開放源碼、通用、編譯的程式語言。 它是一個靜態類型的程式語言。 每個值都有一個分配的類型。在編譯時使用該值作為參數或返回時,將始終檢查其類型。如果不匹配,則程式將無法編譯。 Swift 的編譯器是 LLVM,並且它包含在用於蘋果軟體開發的標準 IDE - Xcode 中。 Swift 是一種現代化的程式語言,旨在“適應”先前設計了一種名為 Objective-C 的不同程式語言的生態系統。 即使對於官方的蘋果應用程式,iPhone 和 Mac 上運行的大多數軟體都是基於 Objective-C 代碼開發的,但 Swift 的使用量逐年增加,而且在未來的新應用程式中可能會使用 Swift。 在蘋果引入 Swift 之前,Objective-C 受到大量的發展,以引入新的功能和特性,但近年來這一努力已大幅減少,為了 Swift 的開發。 這並不意味著 Objective-C 已經死亡或不值得學習:Objective-C 對於任何蘋果開發者來說仍然是一個重要的工具。 也就是說,我不打算在這裡涵蓋 Objective-C,因為我們專注於 Swift。 這是蘋果平台的現在和未來。 在短短的 6 年內,Swift 已經經歷了 5 個主要版本,而我們現在(在撰寫本文的時候)是在版本 5.3。 Swift 被聞名為 Apple 的產品語言,但它並不僅僅是一個 Apple 的語言。我們可以在其他幾個平臺上使用它。它是開源的,因此將語言移植到其他平臺不需要任何許可或授權,並且您可以找到 Swift 專案來創建 Web 伺服器和 API(https://github.com/vapor/vapor),以及與微控制器交互的專案。 它是一門通用的程式語言,建立在現代概念之上,有著光明的前景。 Swift 擁有一些我所看過的程式語言中最好的文件。然而,我想在這裡寫一些關於它的內容,因為我認為有時文件對於初學者來說可能有些複雜。 此外,我通過寫作來學習,並決定重新學習 Swift,在我最後一次接觸 Swift 五年後。自那時以來,語言和 iOS 生態系統已經有了很大的變化,我覺得重新從頭學習它。...