Program
Program = Data Structure + AlgorithmCode
set of statementsStatement
1. 多個 statement 寫在一行時,以分號 ; 來區分 2. compiler 可以分號(;)或空白字元來識別statementVariable / Constant Naming 命名
Swift 採用 unicode,Variable / Constant 的 name 可使用中文、符號等。 合法的 Naming 原則: 1. case sensitive 大小寫有區分,例如: Book 與 book 為不同的識別字 Identifier 2. 首字可為底線 underline _ 或者字母開始,但不能是數字 3. 除首字外,identifier 中的字符可用 underline _ , 字母或是數字
4. 不可使用Swift 已定義的關鍵字(Keyword) Swift 語言非常特別,每個字符採用 Unicode 編碼。 Naming 命名中不可使用: 1. 數學符號 2. 箭頭 3. 保留字 4. 非法 Unicode 字元 5. 連線與制表符號[1] 但,若要引用保留字作為 Variable / Constant 的名稱時,需用反引號(`)來含括。 var `var` = "hello, world" // type inference printf("The code: \(`var`))
關鍵字 Keyword
1. 與宣告 Declaration 有關的 keyword: class、deinit、enum、extension、func、import、init、let、protocol、static、struct、subscript、typealias、var 2. 與 Syntax 有關的 Keyword: break、case、continue、default、do、else、fallthrough、if、in、for、return、switch、where、while 3. 表達式與類型 Keyword: as、dynamicType、is、new、super、self、Self、Type、__COLUMN__、__FILE__、__FUNCTION__、__LINE__ 4. 在特定上下文中使用的 Keyword: associativity、didSet、get、infix、inout、left、mutating、none、nonmutating、operator、override、postfix、precedence、prefix、rightset、unowned、unowned(safe)、unowned(unsafe)、weak、willSetVariable / Constant 宣告
Variable 被宣告定義後,其值可變更,但,Constant 常數顧名思義,一經宣告後,不能變更其值。
當 Variable 變數確定好data type 資料型態後,就不能再儲存另一種資料型態。 Variable 變量、變數:var varName = initValue var varName:dataType變數 variable 命名 一般首字詞為小寫,若有多個字詞,其他字詞首字母為大寫,例如: var studentName:String Constant 常量、常數:var varName:dataType = initValuelet constName = initValue let constName:dataType = initValue常數 Constant 命名 一般為大寫,而以底線 underline (_)來連結兩個字詞,例如: let OMEGA_CONSTANT = 0.56714 1. 靜態語言(例如 Java)的 Variable 的 data type 在 compile 階段就確定,但動態語言 (例如 swift) 則在 Run Time 階段才確定。 2. Swift 是安全性強的語言,Variable 與 Constant 都會指定唯一 data type,但允許以 顯性 / 隱性方式宣告其 data type 3. 若以隱性方式宣告 data type 時, Variable / Constant 需給 init value 4. Variable / Constant 一經指定 data type,其 data 的 type 是不允許以 cast 或任何方式更改 5. 多個 Variable / Constant 被宣告在同一行,則以逗號 (,) 區隔 Variable / Constant Init 初始值 Variable 可宣告 data type,之後程式再設定 init value 即可, 例如:var x //不合法 var x = 100 //合法,Swift 推論 infer 這變數 x 的 data type 為 Int var x: Int //合法,已宣告此變數的 data type 為 Int,程式稍後給初始值即可但,Constant 宣告時,必須設定初始值,例如:let X //不合法 let X: Int //不合法 let X = 100 //合法,隱性方式宣告 let X: Int = 100 //合法亦可使用下列語法將變數包含在字串中:let myNumber = 10 let myString1 = "Number is \(myNumber)" let myString2 = "Number is \(myNumber + 8)"String 的 cat 操作 1. String1 + String2 + ... 2. String1 + toString(variable/constant/...) 3. "String \(variable/constant)"Data Type 數據類型
1. 整數類型 Integer 2. 浮點類型 Floating Point 3. 布爾類型 Boolean 4. 字符/字串類型 Character / String 5. 特殊類型 (位元組 Byte、可選類型) Data Type 都是以大寫字母開頭 Variable / Constant 在 initialize 初始值設定時,要注意 data type 的值域範圍。 整數類型: 1. Signed Integer: Int8 (Byte / SingedByte)、Int16 (ShortFixed)、Int32 (Int)、Int64 (Fixed)、Int [括號為其alias name 別名]
2. Unsigend Integer: UInt8、UInt16、UInt32、UInt64、UInt 3. 整數類型可以十進位制、二進位制(0b)、八進位制(0o)、十六進位制(0x) 表示。 Int/ UInt 是與 platform 有關的整數類型。在32位元平台,Int/UInt 與 Int32/UInt32寬度相同,而在64位元平台,Int/UInt 與 Int64/UInt64 寬度相同。 4. 整數類型 Value 範圍: 其形態皆有 min 與 max 屬性。例如: UInt8.min 與 UInt8.max 定義 UInt8 的值域 domain 範圍。 浮點類型 與整數相反,是具有小數部分的數字。Float、Float64、Double指數表示: 10 進位制: 1.32e-2, 2.72e3 16 進位制: p3 (即 2x2x2 = 8) or P3為增加可讀性, Integer / Floating point 數值可添加多個 0 或底線,例如: var rate = 000.002 var saving = 3_668_108數值轉換 cast 1. 整數與整數之間 2. 浮點數與浮點數之間 3. 整數與浮點數之間 整數/浮點數間數值轉換 1. 初始值為數值時,compiler 自動cast var var1:Int32 = 100 2. 初值為 variable / constant 時,需 cast var var2:Int32 = Int32(var1) 注意:轉換時,若大範圍的數值轉換為小範圍的數值時,精確度 precision 會喪失。例如:UInt32 數值轉換為 UInt8 數值。 類型 Alias Nametypealias newClassName = originalClassNametypealias NewType = Int64 var var1:NewType = 100 布爾類型 布爾類型 Boolean 只含邏輯值,即 true (真) / false (假)let constName:Bool = boolean_value var variableName:Bool = boolean_valuelet num = 100 let result = num == 200 // result is "false" var isAnimal = true 字元和字串: Swift 字元皆以 Unicode 編碼。 字元宣告:var charValue:Character = "A"注意:字元宣告亦使用雙引號。 字串宣告:var stringValue1:String = "A" var StringValue2 = String("A") var stringValue3 = String() //空字串 var stringValue4 = "" //空字串let A = "A" // data type : Character let B = "12" // data type : String let C = A + B // C = "A12" 特殊字元:\0: null \\: slash /u005c \t: tab /u0009 \n: new line /u000a \r: return /u000d \": double quote /u0022 \': single quote /u0027字串中包含特殊字元: 單字節編碼:\xnn 雙字節編碼:\unnnn (例如:lamda 使用 \u03bb 表示) 四字節編碼:\Uxnnnnnnnn (例如:笑臉 Smile 使用 \U0001f603 表示) n: 0 - 9, A - F 16 進位 字串包含 Unicode字元: let percentage = "\x{25}" let snowflake = "\u{2744}" let heart = "\U{0001F497}" \x: before two hexadecimal digits \u: before four hexadecimal digits \U: before eight hexadecimal digits 字串比較:運算元 == , < , >字串大小寫轉換:let upperCaseStr = lowerCaseStr.uppercaseString let lowerCaseStr = upperCaseStr.lowercaseString前綴與後綴的比較:前綴:string.hasPrefix("prefixValue") 後綴:string.hasSuffix("suffixValue")元組類型 Tuples: Tuples are ordered lists of values. 將多個相互關聯的值合為一個值,方便管理和計算。 宣告: let person = (18, "John", size:"big") // 或 person = (age:18, name:"John", size:"big") println(person) 獲取: println("age:\(person.0), name:\(person.1)") var (_, name, _) = person println("name: \(name)") println("size: \(person.size)) let area = (10, 20) // area = (length, width) var area = (length:10, width:20) let (length, width) = area length // prints 10 Optional 類型 In situations where you can't be sure a variable has a value present, you can use optionals. Object 的值 value 可為 nil 宣告: var string1 = "12" var num:Int? = string1.toInt() println(num!) // num 一定有 value,否則 error 亦可以下列表示: var string1 = "12" var num:Int! = string1.toInt() println(num) println(num! + 2) //不可寫成 println(num + 2) var s:String s = "ABC" s! // if you know s has a value, then you could unwrap s using an exclamation point (!)
Word 字組
為Swift 的儲存單位,為 64 bit 字元,即 8 byte 的整數
var 變數名: Word = 初始值
Comment
多行註解: /* ... */ 單行註解: // Swift 允許 nest 巢狀註解: /* this is /* a book */ */Xcode 提供快捷鍵多行comment: 點選多行 code 後,按住 command + / 可多行註解,解除亦以 command + / 命令。
沒有留言:
張貼留言