Swift中有如此多的語法和功能術語,有時候容易感到困惑。因此,此文章將充當術語的一站式詞典,為Swift語言中使用的所有常見術語提供定義。
@
- @autoclosure:作為閉包的函數參數附加的屬性,它要求Swift將在閉包中使用它的任何代碼靜默包裝起來,而不是要求用戶手工完成。這很少使用,但是在assert()函數中很重要。
- @available:附加到類型或函數的屬性,將其標記為對特定版本的Swift或操作系統可用或不可用。
- @discardableResult:附加到返回值的方法的屬性,如果調用者愿意,則將返回值標記為可以安全忽略。如果不使用此選項,則如果不對函數的返回值進行任何操作,Swift將顯示警告。
- @dynamicCallable:附加到類型上的屬性,用于將其標記為可直接調用,主要是使Swift可以更輕松地與動態語言(例如Python)進行交互。
- @dynamicMemberLookup:附加到類型的屬性,用于將類型標記為能夠使用特殊方法處理未定義的屬性,主要是使Swift可以更輕松地與動態語言(例如Python)進行交互。
- @escaping:附加到作為閉包的函數參數的屬性,它告訴Swift閉包將在函數返回后使用。反過來,這將導致Swift安全地存儲閉包,以免過早銷毀它。
- @objc:用于標記必須由Objective-C代碼訪問的方法和屬性的屬性。默認情況下,Swift不會將其代碼提供給Objective-C訪問,以免使代碼變得比需要的大。
- @objcMembers:用于標記類的屬性,其中所有屬性和方法都必須可由Objective-C代碼訪問。默認情況下,Swift不會將其代碼提供給Objective-C訪問,以免使代碼變得比需要的大。
- @unknown:附加在開關塊默認情況下的屬性,該屬性使代碼可以處理將來可能在某個時候添加的枚舉情況,而不會破壞源兼容性。
a
- Access control:一組關鍵字,用于控制其他代碼如何訪問屬性。 open表示可以從任何地方訪問和覆蓋該屬性,public表示可以從任何地方訪問該屬性,但是只能在它來自的模塊中覆蓋; internal表示可以從同一模塊內部的任何位置訪問該屬性,fileprivate意味著該屬性可以可以從同一文件內的任何位置訪問該屬性,而private意味著可以從同一類型內的任何位置訪問該屬性。
- ABI:關于Swift編譯器如何生成二進制文件的描述:如何在內存中布置和訪問數據結構,如何調用函數,等等。
- API:庫為解決特定問題而公開的類,結構,方法和屬性的集合。應用程序編程接口的縮寫。
- Argument:傳遞給函數的值的名稱,將在函數內部使用。例如,在sayHello(to:“ Paul”)中,to部分是一個參數。許多人只是說“參數”而不是“論點”,但是論點在技術上是正確的。
- Array:任何類型的值的順序集合,例如帶中名稱的數組。
- Associated type(關聯類型):協議中缺少的類型,必須由符合協議的任何類型來指定。關聯類型使我們在添加一致性時具有靈活性:可以說要遵守我們的協議,您必須具有一組項目,但是我們不在乎這些項目的數據類型是什么。關聯類型在Swift中是一個單詞:associatedtype。
- Associated value(關聯值):已添加到枚舉用例中以提供一些額外含義的值。例如,您可能有一個枚舉案例,說天氣多風,然后添加一個關聯值,說天氣多風。
b
- Block:可以表示任何以{開頭并以}結尾的代碼塊(“代碼塊”),但是“塊”也是閉包的Objective-C名稱。
- Boolean:一種存儲true或false的數據類型。
- Brace(括號):用于打開和關閉大括號{和}的名稱。
- Bracket(括號):用于打開和關閉方括號的名稱,[和]
- Break(中斷):退出當前循環的關鍵字。如果與帶標簽的語句一起使用,例如break myLoop,它將跳出指定的塊。
c
- Capturing values(捕獲值):閉包過程的名稱,保留對在閉包內部使用但在外部創建的值的引用。這與復制不同:閉包引用原始值,而不是其自己的副本,因此,如果原始值更改,則閉包的值也更改。
- CaseIterable:可應用于枚舉的Swift協議。如果枚舉的個案沒有關聯值,則編譯器將生成allCases數組,使您可以遍歷枚舉中的個案。
- Catch(捕獲):一個關鍵字,用于啟動代碼塊來處理錯誤。您可以指定應捕獲的錯誤類型,并使用通用的“全部捕獲”塊來捕獲所有其他錯誤。與之配對。
- CGFloat:一個浮點數,根據平臺的不同,它可能等效于Double或Float。
- Class:一種自定義數據類型,可以具有一個或多個屬性以及一個或多個方法。與結構不同,類是引用類型。
- Class inheritance(類繼承):一種類可以在另一類上構建,并繼承其所有方法和屬性的能力。有些語言允許一個類從多個父級繼承,但是Swift不允許。
- Closure:匿名函數,該函數自動保留對其使用的,在函數外部聲明的任何值的引用。
- Codable:一種協議,它允許在結構或類與JSON或XML之間輕松轉換。
- Collection:一種序列類型使用的Swift協議,您可以遍歷多次而不會破壞它們或影響集合,例如數組和字典。
- Comparable(可比性):一種通用的Swift協議,其中規定可以使用<將排序類型放入訂單中。
- Compiler directive(編譯器指令):使用#編寫的幾段特殊代碼之一,用作對編譯器的指令。例如,編譯器指令可以檢查我們是否以模擬器為目標,并編譯兩個代碼變體之一。
- Compound assignment operator(復合賦值運算符):修改值并將其同時賦值回原始變量的運算符。例如,score + = 1將1加到當前值。
- Computed property(計算屬性):任何沒有簡單存儲區值的屬性,而是每次通過運行某些代碼訪問該屬性時計算的屬性。
- Condition:使用if語句評估為true或false的所有檢查。您可以提供在條件為真時運行的代碼,以及其他
- Conditional conformance(條件一致性):僅在滿足特定條件的情況下,才能說類型符合協議的能力。例如,Swift的數組僅在其元素也符合Equatable時才符合Equatable。
- Constant:程序中的任何命名數據都可能在程序運行時保持不變。
- Continue:退出循環的當前迭代的關鍵字,使循環立即開始其下一個迭代。如果與帶標簽的語句一起使用,例如繼續myLoop,它將繼續指定的塊。
- Controller:程序中處理邏輯的一部分。模型視圖控制器結構的一部分。
d
- Data:一種類型,可保存任何類型的二進制數據。
- Default case:與所有其他值匹配的開關塊的特殊情況。
- Default parameter:附加有默認值的功能參數,以允許調用者不提供默認值并獲得合理的行為。例如,func checkSettings(debugMode:Bool = true)可以稱為checkSettings(debugMode:true)或checkSettings(debugMode:false),也可以稱為checkSettings()-缺少debugMode值將假定為true,因為這是默認值。
- Defer(延遲):一個關鍵字,允許我們安排退出當前范圍的工作。
- Deinitializer:初始化類的實例被銷毀時調用的一種特殊方法。這些可能不接受參數,并且在結構上不存在。
- Dictionary:使用鍵存儲的高性能,無序值集合,用于快速訪問。
- Do:一個關鍵字,它啟動可能引發錯誤的代碼塊。與漁獲配對。
- Double:高精度浮點數,例如3.1或3.141592654。
e
- Enum:一組命名值,不僅使用字符串或整數,更容易記住和安全。例如,您可以使用北,南,東和西創建方向的枚舉-例如,這比使用0、1、2和3更好。 “枚舉”的縮寫。發音為“ ee-numb”,但“ ee-noom”是可接受的變體。
- Equatable:一種通用的Swift協議,其中指出可以使用==比較一致性類型是否相等。
- Error:我們自己的枚舉可以遵循的Swift協議,然后我們可以使用該協議引發函數錯誤。
- Expression(表達式):一些評估為值的代碼。例如,12 * 12的值為144。
- Extension(擴展):添加到具體類型(例如Int)的一組其他方法和計算屬性。
f
- Fallthrough:在切換塊中使用的關鍵字,意思是“緊隨此之后繼續執行案例”。
- Failable initializer(失敗的初始值設定項):返回初始值的初始值設定項,因為初始化可能由于某種原因而失敗。這些被寫為init?()或init!()。
- Final class(最終類):不能被其他任何東西繼承的類。
- Float:低精度浮點數,例如3.1或3.141592654。
- For loop :循環計算序列中所有值(例如數組或范圍)的循環。
- Force unwrap(強制解包):首先在可選字段中使用值而不檢查其存在的過程。如果可選參數為空(如果沒有值),則強制展開將使您的代碼崩潰。
- Framework:您正在使用的代碼集合。框架與庫的不同之處在于,框架通常接管其操作的控制權,并在需要信息時回調給您。
- Function:執行特定的可重用任務的代碼的命名部分。您可以將參數傳遞給該函數以自定義其運行方式,并且該函數可能返回一個或多個作為其工作結果的值。
- Functional programming(函數式編程):一種編程方法,它傾向于與函數之間收發不變的數據,避免產生副作用,并將函數組合在一起。
g
- Generics(泛型):一種類型或功能可與多種數據類型一起使用的能力。 例如,Swift的數組是通用的,因為您可以創建一個存儲整數的數組,一個存儲字符串的數組,等等。
- guard(保護):一種Swift語法,用于檢查條件是否為真,如果條件不正確,則強制您立即退出當前范圍。 這通常用作防護讓,它檢查可選選項是否具有值,如果有,則為該可選值創建一個新的常量,以便可以安全地使用它。 如果沒有值,則保護條件失敗,您必須退出當前作用域。
h
- Hashable(可散列):一種通用的Swift協議,其中規定可以使用散列值表示符合類型。
- Higher-order function(高階函數):一個函數,該函數接受另一個函數作為參數,或者將一個函數作為其返回值發送回去。
i
- if let:一種Swift語法,用于檢查可選參數是否具有值,如果存在,則為該可選參數的值創建一個新常數,以便可以安全地使用它。如果沒有值,則if條件失敗,您可以改為運行else塊。
- Implicitly unwrapped optional(隱式解開的可選):一種特殊的Swift可選,可能包含也可能不包含值,但在使用前無需進行檢查。如果您嘗試使用沒有值的隱式展開的可選內容,則您的應用程序將崩潰。
- Indirect enum(間接枚舉):經過特殊編譯的枚舉,以便可以在其關聯值中引用自身。例如,如果您有一個鏈接列表枚舉,需要將另一個鏈接列表項作為關聯值引用,則此列表必須是間接的。
- Infinite loop(無限循環):直到您這樣說,循環永遠不會結束。這通常是通過將布爾變量設置為true來完成的-您可以在希望循環結束時立即將其設置為false。
- Initializer(初始化程序):一種特殊的方法,用于創建結構或類的實例。您可以有許多初始化程序,對于類,可以在您自己的初始化程序中調用父初始化程序。
- inout parameter:一個函數參數,當在函數內部更改時,仍然在函數外部更改。
- Integer:整數,例如5、55或5500萬。
?
- Keypath(關鍵路徑):一種無需實際讀取即可引用屬性的方法。
- Keyword:作為Swift構造具有特定含義的任何單詞,例如class,continue和try。
l
- Labeled statement(帶標簽的語句):附加到特定代碼塊(例如循環或條件)的名稱,即使您位于其他代碼塊中,也可以使它特別地突兀。例如,如果您位于第三個循環內的循環內,則可以退出最外層的循環。
- Lazy:將屬性標記為僅在首次訪問時才創建的關鍵字。這是一種性能優化,因為這意味著如果永不訪問該屬性,則永遠不會完成計算其值所需的工作。
- Library:您正在使用的代碼的集合。庫與框架的不同之處在于,庫只是類,結構,枚舉等的集合,供您隨意使用。
m
- Memberwise initializer(成員初始化器):由Swift編譯器自動生成的結構的初始化器,要求所有屬性必須具有值。如果在struct中實現自己的初始化程序,則Swift將不再生成成員初始化程序。
- Method:屬于結構或類的函數。
- Model:程序中存儲數據的一部分。模型視圖控制器結構的一部分。
- Multi-line strings:跨多行的字符串。 Swift中的多行字符串必須在自己的行上以三個雙引號開頭和結尾。
- Mutating method:一種結構上的方法,它將改變結構的屬性之一。必須使用它,因為只有可變結構體才能調用它們的變異方法。類不需要突變方法,因為類中的每個方法都可以在沒有關鍵字的情況下進行突變。
n
- Nested type(嵌套類型):在另一個類或結構內定義的一個類或結構。
- Nil:Swift的缺失數據術語。沒有值的可選值將設置為nil。
- Nil coalescing:Swift中的運算符,寫為??,如果有可選值,則使用可選值,否則使用默認值。
- Non-throwing function(非拋出函數):不能拋出錯誤的函數。不能使用throws標記這些標記,也不能使用throw關鍵字。
o
- Objective-C:蘋果公司的第一款編程語言,也是Swift的先驅。
- Operand(操作數):與運算符一起使用的值。例如,在2 + 3中,2和3是操作數。
- Operator(運算符):在其左側和/或右側的值上充當函數的任何符號。例如,+是將兩個值加在一起的運算符。
- Operator overloading(運算符重載):一個運算符(例如+)根據其使用方式執行多項操作的能力。例如,1 +1是一個整數加法,但是“ Hello” +“ Paul”會將字符串連接在一起。
- Optional(可選):一種包裝其他類型的類型,例如String或Int,但增加了根本不存儲任何值的功能。 “無值”不同于所有常規整數值,包括零。 Swift大量使用可選參數作為提供運行時安全性的一種方式,編譯器強迫我們正確使用它們。
- Optional chaining(可選鏈接):在一行代碼中使用多個可選方法或屬性的能力。如果它們中的任何一個為零,那么該行的執行將停止,但是如果它們全部成功,則將返回一個可選值。例如,用戶?.name?.uppercased()。
- Override method(覆蓋方法):類的方法,其名稱,參數和返回類型與該類的父類的方法相同。 overlay關鍵字告訴Swift編譯器您了解您正在更改行為。
p
- Parameter:已傳遞到函數中的值的名稱,將在函數內部使用。例如,在func sayHello(to:String)中,to部分是一個參數。
- Parameter label(參數標簽):分配給影響其在外部使用方式的功能參數的自定義名稱。例如,在sayHello(to name:String)中,調用該函數的人會說sayHello(to:“ Paul”),但是在函數內部您將引用name。
- Parenthesis(括號):用于打開和關閉圓括號(和)的名稱。
- Polymorphism(多態性):對象顯示為多種不同類型并用作多種類型的能力。例如,如果您已將Labrador類實例定義為父類,則它們也可以用作Dog and Mammal。
- Property(屬性):屬于類,結構或枚舉的常量或變量。
- Property observer(屬性觀察者):使用willSet和didSet添加到屬性的代碼,每當更改屬性時都會調用該代碼。
- Property wrapper(屬性包裝器):圍繞屬性設置的屬性,可為其提供自定義功能。例如,您可以編寫一個@UserDefaults屬性包裝器,以簡化將數據加載和保存到用戶默認值的過程。
- Protocol(協議):類型必須符合的條件列表,例如屬性名稱和方法。協議允許我們以相同的方式對待許多對象,因為它們實現了使協議起作用所需的所有行為。
- Protocol extension :一組添加到協議中的其他方法和計算屬性,例如Equatable。
- Protocol inheritance:一種協議從另一協議繼承需求的能力。例如,可比較協議繼承自Equatable。
- Protocol-oriented programming(面向協議的編程POP):一種編程方法,該方法支持通過協議擴展來重用代碼,從而提供了多重繼承的好處,而又沒有一些復雜性。特別是,面向協議的編程(POP)不能將存儲的屬性添加到類型中,因此減少了麻煩。
r
- Range:范圍跨越兩個值之間的距離,最大到有時包括最終值。這主要用于數字:1 .. <4包括數字1、2和3,而范圍1 ... 4包括數字1、2、3和4。范圍也可以從其他數據中得出類型,例如日期。
- Raw strings:可以在需要使用反斜杠和引號而又沒有常規含義的情況下指定自定義字符串定界符的功能。
- Raw value:可以將枚舉值映射到的簡單基礎數據類型,以進行加載和保存。例如,您可能會說水星,金星和地球這兩個行星的原始原始值為1、2和3。
- Reference type :將數據間接存儲在內存中的任何類型,變量或常量實際上只是該內存的指針(或引用)。如果將第二個變量指向引用類型,則它將指向與原始引用相同的內存數據,因此該數據是共享的。
- Repeat loop:只要條件為真,就會繼續執行的循環。如果其條件開始為假,它將至少執行一次。
- Rethrowing functions(重新拋出函數):使用rethrows關鍵字的函數,以便僅當它接受的閉包拋出錯誤時才拋出錯誤。
- Return type:函數表示將返回的數據類型。 Swift總是強制執行此操作,因此如果您說要返回一個字符串,則必須這樣做。
- Runtime:代碼運行時,而不是編譯時,即代碼構建時。
s
- Scope:變量和常量有效的代碼區域。每次使用右括號時,都會啟動一個新的作用域:所有先前的變量和常量在該作用域中均保持有效,但是在該作用域內聲明的所有變量和常量僅在該作用域以右括號結束之前才有效。
- Selector:一種在不實際調用函數的情況下引用函數的方法,通常用于以后調用它們的目的。
- Serialization:將對象轉換為文本或二進制,反之亦然的過程。例如,將用戶數組轉換為JSON,或將JSON轉換為用戶數組。
- Set:符合哈希協議的任何類型的高性能,無序值集合。
- Shorthand parameter name(速記參數名稱):閉包中可用的特殊參數名稱,用美元符號表示,數字從0開始。例如,如果閉包接受名稱字符串和年齡整數,則可以將字符串稱為
1。注意:您不能將速記語法與常規語法混用和匹配。
- some:使用不透明返回類型的關鍵字–返回類型,例如SwiftUI中的某些View表示“將返回某種View,但具體哪種類型無關緊要”。
- Statement:執行某種動作的一些代碼,例如print(age)。
- Static method:一種在結構或類的所有實例之間共享的方法,而不是每個實例都唯一。因為它不是在結構或類的特定實例上運行,所以它無法訪問未標記為靜態的任何屬性。
- Static property:在結構或類的所有實例之間共享的屬性,而不是每個實例都唯一。
StaticString:Swift的String的一種特殊形式,必須手工鍵入-您必須直接將字符串直接鍵入代碼中,而不是使用字符串插值。 - String:字母的集合,例如“ Hello”。
- String interpolation:Swift將變量和常量的值插入字符串的能力,例如“ Hello,\(name)”。
- Struct:一種自定義數據類型,可以具有一個或多個屬性以及一個或多個方法。與類不同,結構是值類型。
- Subscript:與集合一起使用的特殊方法,可輕松訪問集合中的讀取和寫入值。例如,someArray [3]是下標,someDictionary [“ name”]也是如此。
- Switch case:一種在一個代碼塊中評估多個條件的系統。例如,您可以使用switch age來評估age變量,然后使用0到10、10到20、20到30的個案,依此類推。開關塊在Swift中必須是詳盡無遺的,這意味著它們必須具有覆蓋所有可能值的大小寫。
- Syntactic sugar:一種特殊的Swift語法名稱,旨在掩蓋復雜性。該名稱源于這樣的想法,即最好創建簡短而甜美的語法,使其與較長的語法相同。例如,[String]是Array <String>的語法糖。
- Synthesize:Swift編譯器代表您生成代碼的名稱。例如,如果您說一個自定義結構符合Equatable,并且其所有屬性都已經符合Equatable,則Swift可以為其合成一個==函數。
t
- Ternary operator(三元運算符):使用三個值的運算符,用Swift編寫為? :。例如,isEnabled? 10:如果isEnabled為true,則100將返回10,否則為100。
- Throwing function(投擲函數):具有拋出錯誤的功能的函數。這些必須在Swift中使用throws關鍵字進行標記,并使用try進行調用。
- Trailing closure syntax(尾隨閉包語法):接受閉包作為其最終參數的函數在函數的括號后指定閉包的能力,這通常有助于使函數調用更易于閱讀。
- try catch:運行throwing函數并捕獲發生的任何錯誤的能力。您必須開始使用do塊,然后使用try調用其中的任何throw方法,最后添加一個或多個catch塊以捕獲任何錯誤。編寫catch塊以捕獲所有錯誤有時被稱為Pokémoncatch,因為“您必須捕獲所有東西”。
- Tuple(元組):任何類型的值的固定大小的集合,例如匿名結構。發音為“ tyoo-pull”或“ too-pull”,有時甚至是“ tupple”。
- Type alias:類型別名是指定哪種類型應填充關聯類型的功能。通常不需要這樣做,因為Swift可以通過查看與關聯類型一起使用的屬性來找出類型別名。類型別名在Swift中是一個字:typealias。
- Type inference(類型推斷):Swift的編譯器能夠確定應將哪種數據類型分配給每個變量和常量,因此您不必明確聲明它。
- Typecasting(類型轉換):將一種類型的對象視為另一種類型的對象的能力。當您了解有關Swift編譯器的更多信息時(例如,從情節提要中實例化視圖控制器時),這是必需的。
u
- Unwrapping optionals(解開可選項):檢查可選項中是否有值,并提取該值以便安全使用的過程。
v
- Value type(值類型):直接將其數據存儲在內存中的任何類型。 如果將第二個變量指向值類型,它將始終完整復制數據,而不是允許其共享。
- Variable(變量):代碼中任何已命名的數據,在程序運行時可能會更改。
- Variadic function(可變參數函數):一種函數,采用一個或多個特定類型的值,以逗號分隔。 print()函數是可變參數,因為您可以編寫print(1)來打印單個值,或者通過print(1、2、3、4、5、6、7、8)來打印多個值。
- View:程序的一部分,向用戶顯示可見的結果。 模型視圖控制器結構的一部分。
- void:缺少值。 最常用于表示什么都不返回的函數的返回類型。
w
- While loop:只要條件為真,就會繼續執行的循環。 如果其條件開始為假,則即使執行一次也不會執行。