Swift语言精要 - 属性
1. Stored Property
eg:
var number: Int = 0
2. Computed Property
eg:
var area : Double {
get {
return width * height
}
...
}
完整代码如下:
class Rectangle {
var width: Double = 0.0
var height: Double = 0.0
var area : Double {
// computed getter
get {
return width * height
}
// computed setter
set {
// Assume equal dimensions (i.e., a square)
width = sqrt(newValue)
height = sqrt(newValue)
}
}
}
测试代码:
var rect = Rectangle()
rect.width = 3.0
rect.height = 4.5
rect.area // = 13.5
rect.area = // width & height now both 3.0
3. Property Observer(属性观察者)
class PropertyObserverExample {
var number : Int = {
willSet(newNumber) {
println("About to change to \(newNumber)")
}
didSet(oldNumber) {
println("Just changed from \(oldNumber) to \(self.number)!")
}
}
}
测试代码如下:
var observer = PropertyObserverExample()
observer.number =
// prints "About to change to 4", then "Just changed from 0 to 4!"
4. Lazy Property(属性迟绑定)
class SomeExpensiveClass {
init(id : Int) {
println("Expensive class \(id) created!")
}
}
class LazyPropertyExample {
var expensiveClass1 = SomeExpensiveClass(id: )
lazy var expensiveClass2 = SomeExpensiveClass(id: )
init() {
println("First class created!")
}
}
测试代码如下:
var lazyExample = LazyPropertyExample()
// prints "Expensive class 1 created", then "First class created!"
lazyExample.expensiveClass1 // prints nothing, it's already created
lazyExample.expensiveClass2 // prints "Expensive class 2 created!"
Swift语言精要 - 属性的更多相关文章
- Swift语言精要 - 浅谈结构体(Struct)
CGRect, CGSize, CGPoint这些是 . String, Int, Array, Dictionary这些我们经常用的也是结构体(Struct). 那么结构体(Struct)到底是什么 ...
- Swift语言精要 - Operator(运算符重载)
运算符重载 Swift的这一语言特性或许应该启发于C++ class Vector2D { var x : Float = 0.0 var y : Float = 0.0 init (x : Floa ...
- Swift语言精要 - 扩展(Extension)
swift的Extension用户在不访问代码的情况下扩展基本结构类型或自定义类 extension Int { var doubled : Int { } func multiplyWith(ano ...
- Swift语言精要-闭包(Closure)
闭包(Closure)这个概念如果没学过Swift的人应该也不会陌生. 学过Javascript的朋友应该知道,在Javascript中我们经常会讨论闭包,很多前端工程师的面试题也会问到什么是闭包. ...
- Swift语言精要 - 序列化和反序列化
在swift中你可以把一个对象转换成为数据,你所要做的就是 首先,你需要让对象实现NSObject和NSCoding协议. 其次,实现以下两个方法: encodeWithCoder init(code ...
- Swift语言精要 - 浅谈代理模式(Delegate)
在iOS编程中,我们经常谈到代理代理,也就是delegate,那么什么是代理呢? 我们来看一下cocoa对它的描述: Delegation is Cocoa’s term for passing of ...
- Swift语言精要 - Dictionary(字典)
字典以键值对的形式存储数据. 键不能重复,但是值可以重复. 基本语法用例: var states : Dictionary<String, String> = ["CA" ...
- Swift语言快速入门
Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著 ISBN 978-7-121-24328-8 201 ...
- 赶时髦过了一遍Swift 语言....
Swift 语言 2014年6月3日发布,替代OBJECT-C Swift is a new programming language for creating iOS and OS X apps. ...
随机推荐
- OLE文件拖放
使用IDropTarget接口同时支持文本和文件拖放 关于Windows的外壳扩展编程,拖放是比较简单的一种,在网上可以找到不少介绍这个技巧的文章.大部分是介绍使用MFC的COleDropTarget ...
- Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.
Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏. Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.没有MS开发环境中的ShowI ...
- Cesium中的地形和坐标转换说明
1 Cesium中的地形 Cesium中的地形系统是一种由流式瓦片数据生成地形mesh的技术,厉害指出在于其可以自动模拟出地面.海洋的三维效果.创建地形图层的方式如下: var terrainProv ...
- msgpack的数据序列和还原
msgpack的数据序列和还原 msgpack不仅可以序列一些常规的数据类型的数据,比如:string.datetime.integer...... 还能序列olevariant.stream 这就非 ...
- iOS 内存斗争小史之 NavigationController
1.怎样写一个不泄漏的NavigationController页面跳转程序? 非arc模式下,假设有A.B两个viewController,从A推到B,怎样写内存才能不泄漏? A.m -(IBActi ...
- C#编程(五十五)----------HashSet和SortedSet
集 饱含不重复元素的集合称为”集(set)”. .NET4包含两个集(HashSet<T>和SortedSet<T>),他们都实现ISet<T>接口.HashSet ...
- c++ strcmp strcpy sprintf
- oracle11g忘记sys密码
目 录 1 以管理员身份运行cmd窗口 2 启动sqlplus并敲入一系列命令 3 特别注意 1以管理员身份运行cmd窗口 我安装的是oracle11.2版本,sqlplus.exe所在目录是:I: ...
- 每天一个linux命令-tai命令
动态监视文件尾部. 命令参数: -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示行数 --pid=PID 与-f合 ...
- 从源码角度一步一步来修改PreferenceActivity界面
PreferenceActivity给我们封装好了一个数据存储对象,我们只需要在xml文件中写上控件即可完成简单的设置界面.但是系统提供的设置界面十分的简陋,要想做的好看必须要自己来进行修改 ...