Swift学习笔记(一)关键字
2018-01-22 本文已影响13人
不吃番茄炒蛋
在这里总结一些关于Swift的一些关键字的使用和应用场景。
Final
关键字可用于class、func、var前面进行修饰,标识不允许对该内容进行继承和重写操作。
Lazy
延时加载或者是延时初始化常用的关键字,也就是OC中常用的懒加载。
OC中的懒加载
// CustomObject
@property(strong, noatomac) CustomObject *object;
- (CustomObject *)object {
if(!_object) {
_object = [[CustomObject alloc]init];
}
return_object;
}
Swift - Lazy
class ClassA {
lazy var str:String = {
let str = "str"
return str
}()
}
Static
Swift中标识“类型范围作用域”,用于修饰存储属性,static修饰的存储属性称为静态变量(常量),不可被重写,可以在类,结构体,或者枚举中使用。
在非class的类型上下文中,我们统一使用static来描述类型作用域。包括enum和struct中表述类型方法和类型属性时。在这两个值类型中,我们可以在类型范围内声明并使用存储属性,计算属性和方法。static适用的场景有这些:
struct Point {
let x:Float
let y:Float
// 存储属性
static let zero = Point(x:0, y:0)
static var ones:[Point] {
return[Point(x:1, y:1),
Point(x:-1, y:1),
Point(x:1, y:-1),
Point(x:-1, y:-1)]
}
// 类型方法
static func add(p1:Point, p2:Point) -> Point {
return Point(x:p1.x + p2.x, y: p1.y + p2.y)
}
}
Class
Class 关键字相比起来就明白许多,是专门用在class类型的上下文中,可以用来修饰类方法以及类的计算属性。但是有一个例外,class中现在是不能出现class的存储属性的,我们如果写类似这样的代码的话:
class MyClass {
class var bar:Bar?
}
编译时会得到一个错误:
class variables not yet supported
我们可以在class中使用static来声明一个类作用域的变量。
class MyClass {
static var bar:Bar?
}
以上的写法是合法的。
未完待续。。。