let maximumNumberOfLoginAttempts = 10 // maximumNumberOfLoginAttempts = 20 // 编译报错 var currentLoginAttempt = 0 currentLoginAttempt = 20 var x = 0.0, y = 0.0, z = 0.0 // 命名规则,建议命名为小写字母开头的驼峰式,下述命名也不报错,但是不建议使用 let π = 3.14159 let 你好 = "你好世界"
(1)Int 特殊的整数类型:32位平台上与 Int32 长度相同;64位平台上与 Int64 长度相同。一般情况下,在实际使用中 Int 就够了。
(2)UInt 特殊的无符号整数类型:32位平台上与 UInt32 长度相同;64位平台上与 UInt64 长度相同。一般情况下尽量使用Int,不要使用 UInt。
// 类型注释 var welcomeMessage: String welcomeMessage = "Hello" var red, green, blue: Double // 类型推断 var welcomeMessage2 = "Hello" let pi = 3 + 0.14159注意:当推断浮点数的类型时,Swift 总是会选择 Double 而不是 Float。
print(17) // 17 print(0b10001) // 17 print(0o21) // 17 print(0x11) // 17
浮点数字面量可以是十进制(没有前缀)或者是十六进制(前缀是0x)。
浮点字面量还有一个可选的指数,十进制中用大写或者小写的(e)来表示,十六进制中用大写或者小写的(p)来表示。
println(1.25e2) // 125.0 println(1.25e-2) // 0.0125 println(0xFp2) // 60.0 println(0xFp-2) // 3.75注意:数值类字面量可以包括额外的格式来增强可读性。
println(000123.456) // 123.456 println(1_000_000) // 1000000 println(1_000_000.000_000_1 ) // 1000000.0000001
// 整数和浮点数转换 let three = 3 let pointOneFourOneFiveNine = 0.14159 let pi = Double(three) + pointOneFourOneFiveNine let integerPi = Int(pi)
typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min
let orangesAreOrange = true let turnipsAreDelicious = false
let http404Error = (404, "Not Found") // 内容分解 let (statusCode, statusMessage) = http404Error println("The status code is \(statusCode)") // prints "The status code is 404" println("The status message is \(statusMessage)") // prints "The status message is Not Found" // 部分分解 let (justTheStatusCode, _) = http404Error println("The status code is \(justTheStatusCode)") // prints "The status code is 404" // 下标访问 println("The status code is \(http404Error.0)") // prints "The status code is 404" println("The status message is \(http404Error.1)") // prints "The status message is Not Found" // 元素命名 let http200Status = (statusCode: 200, description: "OK") println("The status code is \(http200Status.statusCode)") // prints "The status code is 200" println("The status message is \(http200Status.description)") // prints "The status message is OK"
var serverResponseCode: Int? = 404 serverResponseCode = nil // 声明一个可选常量或者变量但是没有赋值,它们会被自动设置为 nil var surveyAnswer: String?(2)if 语句以及强制解析
let possibleNumber = "123" let convertedNumber = possibleNumber.toInt() if convertedNumber != nil { println("convertedNumber has an integer value of \(convertedNumber!).") } // prints "convertedNumber has an integer value of 123."(3)可选绑定
let possibleNumber = "123" if let actualNumber = possibleNumber.toInt() { println("\'\(possibleNumber)\' has an integer value of \(actualNumber)") } else { println("\'\(possibleNumber)\' could not be converted to an integer") } // prints "'123' has an integer value of 123"(4)隐式解析可选
let possibleString: String? = "An optional string." let forcedString: String = possibleString! // 需要感叹号获取值 let assumedString: String! = "An implicitly unwrapped optional string." let implicitString: String = assumedString // 不需要感叹号 if assumedString != nil { println(assumedString) } // prints "An implicitly unwrapped optional string." if let definiteString = assumedString { println(definiteString) } // prints "An implicitly unwrapped optional string."注意:如果一个变量之后可能变成 nil 的话请不要使用隐式解析可选。
let age = -3 // 继续运行代码 assert(age < 0) // 停止运行代码 assert(age >= 0, "A person's age cannot be less than zero")