Swift 4.0

2019-01-07  本文已影响46人  CDLOG

类型安全和类型推断

  Swift 是一个类型安全(type safe)的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果你的代码需要一个String,你绝对不可能不小心传进去一个Int。如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。有了类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。原理很简单,只要检查你赋的值即可

简单值

  常量和变量必须在使用前声明,用 let 来声明常量,用 var 来声明变量.
  当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。一般来说,当没有初始值时,才需要类型标注。
  一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。
SomeType(ofInitialValue) 是调用 Swift 构造器并传入一个初始值的默认方法,用于进行类型的显示转换。

var myVariable = 42 //变量
myVariable = 50
let myConstant = 42 //常量
let explicitDouble: Double = 70 //类型标注
String(explicitDouble)//显示转换
print("变量转换为字符串\(explicitDouble)")

数值型字面量

一个十进制数,没有前缀
一个二进制数,前缀是0b
一个八进制数,前缀是0o
一个十六进制数,前缀是0x
1.25e2 表示 1.25 × 10^2,等于 125.0。
1.25e-2 表示 1.25 × 10^-2,等于 0.0125。
0xFp2 表示 15 × 2^2,等于 60.0。
0xFp-2 表示 15 × 2^-2,等于 3.75。

类型别名

类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用typealias关键字来定义类型别名。类似宏替换。

typealias AudioSample = UInt16

布尔值Bool

let orangesAreOrange = true
let turnipsAreDelicious = false

元组

元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。作为函数返回值时,元组非常有用.元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。

//初始化元组
let http404Error = (404, "Not Found")
//将一个元组的内容分解(decompose)成单独的常量和变量
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 输出 "The status code is 404"
print("The status message is \(statusMessage)")
// 输出 "The status message is Not Found"

//在定义元组的时候给单个元素命名
let http200Status = (statusCode: 200, description: "OK")
//给元组中的元素命名后,你可以通过名字来获取这些元素的值
print("The status code is \(http200Status.statusCode)")
// 输出 "The status code is 200"
print("The status message is \(http200Status.description)")
// 输出 "The status message is OK"

//如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 输出 "The status code is 404"

//还可以通过下标来访问元组中的单个元素,下标从零开始
print("The status code is \(http404Error.0)")
// 输出 "The status code is 404"
print("The status message is \(http404Error.1)")
// 输出 "The status message is Not Found"
上一篇下一篇

猜你喜欢

热点阅读