Swift-常量與變量

一、常量與變量

1、使用之前必須聲明

let constant = "常量"
var variable = "變量"

2、一行聲明多個變量和多個變量賦值

var red, green, blue: Double
var x = 0.0, y = 0.0, z = 0.0

3、變量、常量名的命名

  • 不能以數字開頭
  • 如果非要使用Swfit關鍵字,則需要關鍵字前后添加反引號(`)
  • 如果在使用printf打印輸出時不想換行,可以設置terminator參數為""
let (`let`) = "let關鍵字"
print("輸出", terminator:"")
print("是是是\(XXX)")

4、swift注釋

  • swift中的多行注釋可以允許嵌套注釋
/*XXXXXXXXX
XXXXXXXXXXX
/*XXXXXXXXX
*/
XXXXXXXXXXX
*/

二、整形、浮點型

1、浮點型:Double、Float(優先使用Double)

Double:精確度至少15位數字
Float :精確度最多只有6位數字

2、整形字面量

  • 一個10進制,沒有前綴
  • 一個2進制,0b為前綴
  • 一個8進制,0o為前綴
  • 一個16進制,0X為前綴
let decimalInter        = 17
let binaryInteger       = 0b10001
let octalInteger        = 0c21
let hexadecimalInteger  = 0x11

3、整型范圍

Int8    :-128 ~ 127
UInt8   : 0 ~ 255

4、類型別名(Type Aliases)

typealias AudioSample(類型別名) = UInt16

5、元祖(Tuple)

  • 元祖內部可以是任意類型的值
  • 元祖內訪問元素下標從0開始
  • 定義元祖時,給元祖內部元素命名
  • 元祖不適合創建復雜的數據結構,它在臨時組織值時非常有用
//創建元祖
let http404Error = (404, "Not Found")
let http404Error = (statusCode:200, description: "OK")
//分解元祖
let (statusCode, statusMessage) = http404Error
//忽略元祖一部分
let (statusCode, _) = http404Error
//通過下標來訪問元祖元素
print("this is \(http404Error.0)")
//通過名字來訪問元祖元素
print(http404Error.statusCode)

6、可選類型(Optionals)

  • 給可選變量賦值為nil,表示它沒有值
  • 可選常量或者變量如果沒有賦值,它們會自動被置為nil
  • 表示一個確定的值,用來表示值缺失,任何類型的可選狀態都可以被置為nil
  • 通過添加!來強制解包
  • 在一個if語句中,可以包含多個可選綁定或者多個布爾條件,每一個之間使用,隔開,只要有任意一個可選綁定的值為nil或者任意一個布爾值為false,則整個if條件判斷為false,也可以使用嵌套if語句來處理
var name: String? = "guojie"
print("my name is \(name!)")
//可選綁定
if let constantName = someOptional {
    statements
}
if let firstNumber = Int("400"), let secondNumber = Int("43"), firstNumber < secondNumber && secondNumber < 100 {
    print("陳工")
}else{
    print("失敗")
}
if let firstNumber = Int("4") {
    if let secondNumber = Int("42") {
        if firstNumber < secondNumber && secondNumber < 100 {
            print("成功")
        }
    }
}

7、錯誤處理(error handing)

  • 通過使用錯誤處理來處理中程序可能出現的錯誤
  • 一個函數通過在聲明時添加throws關鍵字來拋出錯誤,同時在調用可能出現錯誤的函數時,將try關鍵字放置前
func canThrowAnError() throws {
    
}
do {
    try canThrowAnError()
    //沒有錯誤信息拋出
} catch {
    有一個錯誤信息拋出
}
  • do語句將錯誤能被傳播到更多個catch從句中
func makeASandwich() throws {
    //…………
}
do {
    try makeASandwich()
    eatASandwich()
} catch SandwichError.outofCleanDishes {
    washDishes()
} catch SandwichError.missingIngredients(let ingredients) {
    buyGroceries(ingredients)
}

8、斷言和先決條件

  • 斷言只是在Debug環境中運行檢查,先決條件則在Debug和Release環境中運行檢查
  • 如果編譯在unchecked mode(-Ounchecked),先決條件不會被檢查,斷言和先決條件都是true
let age = -3
//斷言(因為-3不>=0,所以斷言失敗)
assert(age >= 0, "A person's age can't be less than zero")
//不帶信息的斷言
assert(age>= 0)
//如果代碼已經檢查了條件,則使用
assertionFailure(_:file:line:)
//先決條件
precondition(index > 0, "Index must be greater than zero")
//表示先決條件發生失敗
preconditionFailure(_:file:line:)

9、致命失敗(fatalError)

  • 即使編譯處于unchecked mode(-Ounchecked)時,fatalError仍然會被執行
  • 在開發早期,只有方法聲明,沒有實現,可以使用fatalError(_:file:line:)
  • 使用fatalError("Unimplemented")函數作為具體實現,不會被斷言和先決條件那樣被優化掉,可以確保代碼執行到沒有實現的方法時,程序會被中斷
//致命失敗(fatalError)
fatalError(_:file:line:)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,372評論 1 27
  • Swift 是一門開發 iOS, macOS, watchOS 和 tvOS 應用的新語言。然而,如果你有 C 或...
    XLsn0w閱讀 930評論 2 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139
  • 前言 Swift是一門新的適用于iOS,macOS,watchOS,tvOS開發的編程語言。盡管如此,Swift的...
    BoomLee閱讀 1,783評論 0 4
  • 1、范型范型所解決的問題 函數、方法、類型:類,結構體,枚舉,元組類型,協議參數,返回值,成員函數參數,成員屬性類...
    我是小胡胡123閱讀 858評論 0 1