Swift笔记

2016-04-22  本文已影响5人  大饼炒鸡蛋

let

let常量一旦定义不能改变场景

let image = UIImage(constentsOfFile:”MyImage.png”)

let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)

打印字符串

print("\(nameInferred) on sale for \(priceInferred)!")打印语法\(your expression)

可选类型optional

默认为nil只有可选类型才能赋值为nilnil在swift中是一个确定的值,任何类型的可选类型都可以被设置为nil,不只是对象类型,确定有值在变量后加!来强制解析获取值(一定要确定有一个非nil值,要不会报错)

可选绑定optional binding

判断可选类型是否包含之,如包含赋值给一个临时常量或者变量,可以用在if和while语句中,比如

if let contantName = someOptional {

           statements

}

if let actualNumber = Int(possibleNumber) {

print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")

}

隐式解析可选类型

关键词:当可选类型第一次被赋值之后确定一直有值,可声明为隐式可选类型,要不每次都要判断和解析可选值是非常低效的,它其实就是一个普通的可选类型,但可以被当做非可选类型来使用,并不需要每次都使用解析来获取值

let possibleString: String? = "An optional string."

let forcedString: String = possibleString! //需要惊叹号来获取值

let assumedString: String! = "An implicitly unwrapped optional string."

let implicitString: String = assumedString//不需要感叹号

错误处理

func makeASandwich() throws {

// ...

}

do {

try makeASandwich()

eatASandwich()

} catch Error.OutOfCleanDishes {

washDishes()

} catch Error.MissingIngredients(let ingredients) {

buyGroceries(ingredients)

}

空合运算符a??b

对可选类型a进行空判断,如果a包含值就解析否则返回一个默认值b,是对以下代码的简短表达式

a != nil ? a! : b

区间运算符

闭区间运算符(a...b)

for index in 1...5 {

   print("\(index) * 5 = \(index * 5)")

}

半开区间运算符

半开区间(a..<b)

闭包表达式

{ (parameters) -> returnType in

statements

}

闭包的函数体部分由关键字in引入。该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。

reversed = names.sort({ (s1: String, s2: String) -> Bool in

return s1 > s2

})

尾随闭包:如果您需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用尾随闭包来增强函数的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用:

func someFunctionThatTakesAClosure(closure: () -> Void) {

// 函数体部分

}

// 以下是不使用尾随闭包进行函数调用

someFunctionThatTakesAClosure({

// 闭包主体部分

})

// 以下是使用尾随闭包进行函数调用

someFunctionThatTakesAClosure() {

// 闭包主体部分

}

reversed = names.sort() { $0 > $1 }

如果函数只需要闭包表达式一个参数,当您使用尾随闭包时,您甚至可以把()省略掉:

reversed = names.sort { $0 > $1 }

结构体和枚举是值类型

值类型被赋予给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝。

类是引用类型

与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,引用的

是已存在的实例本身而不是其拷贝。

等价于(===)  和等于(==)

等价于”表示两个类类型(class type)的常量或者变量引用同一个类实例。

 “等于”表示两个实例的值“相等”或“相同”

常量结构体的存储属性

如果创建了一个结构体的实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使定义了变量存储属性

计算属性

计算属性不直接存储值,而是提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值。

struct Rect {

var origin = Point()

var size = Size()

var center: Point {

get {

let centerX = origin.x + (size.width / 2)

let centerY = origin.y + (size.height / 2)

return Point(x: centerX, y: centerY)

}

set(newCenter) {

origin.x = newCenter.x - (size.width / 2)

origin.y = newCenter.y - (size.height / 2)

}

}

}

上一篇下一篇

猜你喜欢

热点阅读