Swift 学习笔记十五:扩展

扩展就是向一个已有的类、结构体或枚举类型添加新功能(functionality)。扩展和 Objective-C 中的分类(categories)类似。(不过与Objective-C不同的是,Swift 的扩展没有名字。)

Swift 中的扩展可以:

1.添加计算型属性和计算静态属性

2.定义实例方法和类型方法

3.提供新的构造器

4.定义下标

5.定义和使用新的嵌套类型

6.使一个已有类型符合某个协议

一、扩展属性,构造器,方法

class Human{
    var name:String?
    var score:Double
    init(name:String,score:Double){
        self.name = name
        self.score = score
    }
}
extension Human{
    var scale:Double{   //扩展计数属性类型
        return Double(score)/60
    }
    convenience init(){ //扩展便利构造器
        self.init(name:"小笨狼",score:60)
    }
    func description(){ //扩展方法
        println("name:\(name),score:\(score)")
    }
}

重点:

① 扩展使用关键字extension

② 扩展中添加属性只能是计算类型属性,不能是存储类型

③ 扩展中添加构造器只能是便利构造器,不能是指定构造器和析构函数

Swift 学习笔记十五:扩展

时间: 2024-10-12 12:26:29

Swift 学习笔记十五:扩展的相关文章

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

Swift学习笔记十四:构造(Initialization)

类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值.存储型属性的值不能处于一个未知的状态. 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值.以下章节将详细介绍这两种方法. 注意: 当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器(property observers). 一.基本语法 class Human{ var name :String init(){ name = "human" } init(n

laravel3学习笔记(十五)

原作者博客:ieqi.net ==================================================================================================== 异常与日志 在应用中,我们总会遇到各种问题.各种异常,这时,记录异常发生时的状态就很重要,所以异常与日志是有着天然的关系的. 关于异常与日志的配置在文件 application/config/error.php 中. 文件中有四个配置项: 'ignore' => ar

西门子PLC学习笔记十五-(数据块及数据访问方式)

一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的. 数据块分共享数据块.背景数据块.用户自定义数据块,下面分别介绍. 1.共享数据块(全局数据块) 其用于存储全局数据,所有逻辑块(OB.FC.FB)都可以访问共享数据块中的数据. 2.背景数据块(私有存储区) 其用做功能块(FB)的"存储器".FB的参数和静态变量安排在它的背景数据块中.

Swift学习笔记十六:协议

Protocol(协议)用于统一方法和属性的名称,而不实现不论什么功能. 协议可以被类.枚举.结构体实现.满足协议要求的类,枚举,结构体被称为协议的遵循者. 遵循者须要提供协议指定的成员,如属性,方法,操作符,下标等. 一.协议的基本的语法 咱们还是先上代码吧 protocol Human { var name:String{ get set } var isMan:Bool{set get} class var isUsable:Bool { set get } //类成员.表示这个类是否可用

swift学习第十五天:闭包

闭包 闭包的介绍 闭包和OC中的block非常相似 OC中的block是匿名的函数 Swift中的闭包是一个特殊的函数 block和闭包都经常用于回调 注意:闭包和block一样,第一次使用时可能不习惯它的语法,可以先按照使用简单的闭包,随着学习的深入,慢慢掌握其灵活的运用方法. 闭包的使用 block的用法回顾 定义网络请求的类 @interface HttpTool : NSObject - (void)loadRequest:(void (^)())callBackBlock; @end

Swift学习笔记(五)——在Background中启用控制台Console Output模式

在之前的介绍中可以知道,使用Xcode中的background来学习Swift是非常强大的,可以在右侧的界面中实时预览代码中的所有常量或者变量的值,非常方便.但是现在我们学习的Swift应该作为一种控制台程序出现,就像初学C,OC一样.所有代码的打印结果都可以在Console控制台中显示,以区别之前的所有参数值都显示在一起的情况.但是默认打开Background是没有所谓的控制台的.那怎么办呢?下面简述打开Background的方法. (1)打开Xcode,选择View-->Assistant

Swift学习笔记十

枚举 一个枚举为一组相关联的值定义一个通用类型,并且让你可以在代码中类型安全地操作这些值. C中的枚举将关联的名字指派给一系列整型值.Swift中的枚举类型更为活泼,并不需要为每个成员指定值,如果指定值(raw value),这个值可以是String或者Character.整型或者浮点型. 此外,每个枚举成员可以指定不同数量的任意类型的关联值存储起来.这有点像其他语言里的联合.你可以定义一个普通的一系列关联值的集合作为一个枚举的一部分,每个枚举都可以有一个适当类型的不同集合. 在Swift中,枚