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. ...
随机推荐
- 使用HTML5和CSS3碎语
当我们使用HTML5, CSS3,甚至Bootstrap设计网站的时候,有些方面是必须考虑的,比如字体大小,标题大小,行间距,每行字数,字体,颜色,背景图片和文字的搭配,图标,留白和布局......所 ...
- AutoMapper在MVC中的运用05-映射中的忽略、处理null、多种映射转换
本篇AutoMapper使用场景: ※ 动态实现接口方法或属性 ※ 目标中的属性如果比源多,可以忽略多出的属性 ※ 目标有virtual属性,可忽略 ※ 目标属性值为null的解决办法 ※ int转s ...
- SpringBoot配置多数据源
原文:https://www.jianshu.com/p/033e0ebeb617 项目中用到了两个数据库,分别是Oracle和Mysql,涉及到了多数据源问题,这里做下记录 官方讲解:https:/ ...
- ASP.NET MVC:模块化/插件式架构实现(转载)
I’ve recently spent quite a lot of time researching and prototyping different ways to create a plugi ...
- Codeforces Round #131 Div1 B
Problem 给出Ai(i∈[0,9]).表示每一个数字至少须要出现多少次.问有多少个数满足下面三个条件:1. 数至多有N位:2. 数不含有前导0:3. 每一个数 i 出现的次数不少于Ai(mod ...
- 使用WebRTC搭建前端视频聊天室
在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩展成多个数据中心.这种情况下很容易出现很高的延迟,同时难 ...
- windows 下运行 UglifyJS
Node 0.52版本支持windows,因此UglifyJS可以在windows上运行,下面简介他的方法: 1.下载node.exe,现在最新版本0.52,他的官网http://nodejs.org ...
- Mac下启动AndroidStudio失败
系统环境: OSX Yosemite 10.10.1 (14B25) JAVA版本:1.8.0_11 Android Studio 版本:1.0.1 问题:Android Studio was una ...
- solc 编译Solidity
安装 sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install solc 编译 so ...
- [Android Pro] AndroidStudio IDE界面插件开发(进阶篇之Editor)
转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001/article/details/53885981] 我们开发AndroidStudio ...