代码改变世界

Swift学习笔记(1):基础部分

2017-05-18 17:58  杨平  阅读(241)  评论(0编辑  收藏  举报

目录:

  • 分号
  • 常量和变量
  • 数据类型
  • 数值型类型转换
  • 类型别名
  • 元组
  • 可选类型
  • API版本检查

分号

Swift并不强制要求你在每条语句的结尾处使用分号( ; ),你也可以按照自己的习惯添加分号。如果在一行内写多条独立的语句情况下必须要用分号。

 

常量和变量

使用let定义常量,使用var定义变量,常量和变量必须在使用前声明,且可以使用Unicode字符声明:不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
let constWelcomeMessage: String // 类型标注
var varWelcomeMessage: String  // 类型标注 
let 你好 = "你好世界" // Unicode字符声明常量
let ?? = "dogcow"   // Unicode字符声明常量

你可以在一行中声明多个常量或者多个变量,用逗号隔开:

var x = 0.0, y = 0.0, z = 0.0
var red, green, blue: Double  // 类型标注

 

数据类型

Swift包含基础数据类型:

1 Int, Int8, Int16, Int32, Int64, UInt, UInt8, UInt16, UInt32, UInt64 : 整型值
2 Float     : 表示32位浮点数
3 Double    : 表示64位浮点数, 当执行类型推断而推断浮点数的类型时,Swift总是会选择Double而不是Float
4 Bool      : 布尔型值
5 String    : 文本型值
6 Character : 字符型值

 Swift提供集合数据类型:

1 Array      : 数组类型
2 Set        : 集合类型
3 Dictionary : 字典类型

Swift中所有的基本类型:整数、浮点数、布尔值、字符串、数组和字典,都是值类型,并且在底层都是以结构体的形式所实现。

 

数值型类型转换

Int8和Int16是不同的两种类型,在转换时必须使用类型强制转换

// 整数类型转换 
let twoThousand: UInt16 = 2000
let one: UInt8 = 1
let twoThousandAndOne = twoThousand + UInt16(one)
// 整数和浮点数间转换
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine // 加号两边的数类型须相同

 

类型别名

可以使用 typealias 关键字来定义类型别名

typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound = 0

 

元组

把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型

let http404Error = (404, "Not Found")                    // http404Error 的类型是 (Int, String)
let http200Status = (statusCode: 200, description: "OK") // 定义元组元素
let (statusCode, statusMessage) = http404Error           // 分解元组获取元素值
let (justTheStatusCode, _) = http404Error                // 忽略缺省值

 

可选类型

可以使用?定义可选类型变量或常量

var surveyAnswer: String?                    // surveyAnswer 被自动设置为 nil
var serverResponseCode: Int? = 404
let possibleString: String? = "An optional string."
let forcedString: String = possibleString!  // 需要感叹号来获取值

如果一个可选类型变量或常量第一次被赋值之后,能够确定总会有值时,可以使用!定义隐式解析可选类型的变量或常量

let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString  // 不需要感叹号

 

API版本检查
if #available(iOS 10, macOS 10.12, *) {
    // 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
    // 使用先前版本的 iOS 和 macOS 的 API
}

 

 

声明:该系列内容均来自网络或电子书籍,只做学习总结!