文档章节

Swift学习(二):自定义扩展方法(Extensions)

Cosmokey
 Cosmokey
发布于 2015/05/20 14:25
字数 207
阅读 2
收藏 0

扩展就是向一个已有的类、结构体或枚举类型添加新功能(functionality)

扩展可以

添加计算型属性和计算静态属性
定义实例方法和类型方法
提供新的构造器
定义下标
定义和使用新的嵌套类型
使一个已有类型符合某个协议(接口)

 

语法

extension SomeType {
    // 加到SomeType的新功能写到这里
}

extension SomeType: SomeProtocol, AnotherProctocol {
    // 协议实现写到这里
}

 

范例

extension String {
    subscript (range: Range<Int>) -> String {
        get {
            let startIndex = advance(self.startIndex, range.startIndex)
            let endIndex = advance(startIndex, range.endIndex - range.startIndex)
            
            return self[Range(start: startIndex, end: endIndex)]
        }
    }
    
    subscript (start:Int, length:Int) -> String {
        get {
            let startIndex = advance(self.startIndex, start)
            let endIndex = advance(startIndex, length)
            
            return self[Range(start: startIndex, end: endIndex)]
        }
    }
    
    var Length : Int{
        get{
            return count(self)
        }
    }
}

println("ABCDEFGHI"[0...4])            //ABCDE
println("ABCDEFGHI"[0..<4])           //ABCD 
println("ABCDEFGHI"[1,4])              //BCDE
println("ABCDEFGHI".Length)          //9

 

本文转载自:http://www.cnblogs.com/comsokey/p/Swift2.html

Cosmokey
粉丝 0
博文 3
码字总数 0
作品 0
深圳
高级程序员
私信 提问
Swift-Useful-Extensions

Swift-Useful-Extensions 是使用 Swift 重写许多的有用的 Objective-C 类集合。 Int 扩展 isEven:Bool isOdd:Bool isPositive:Bool isNegative:Bool toDouble:DoubletoFloat:Floatdigits:In......

叶秀兰
2014/07/08
377
0
Swift-NSDate-Extensions

Swift-NSDate-Extensions 是 Swift NSDate 扩展,帮助开发。

叶秀兰
2014/12/08
478
0
扩展 -- Extensions

扩展就是向一个已有的类、结构体或枚举类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)...

626224816
2014/08/03
0
0
AppCode 2017.1 EAP,更好支持 Swift 3

AppCode 2017.1 EAP 前几天就已经发布了。该版本更新的亮点有 override/implement 的改进,更好的 Swift 3 支持以及其他等等。 对 Swift 3 的支持 该版本完成了 Objective-C 到 Swift 转换更...

局长
2017/01/29
826
1
15个快速学习苹果Swift编程语言的入门教程

要说今年最火的编程语言是什么。那就非Swift莫属了。当然最主要还是市场炒的比较热,加上官方Swift教程《The Swift Programming Language》在北航的大三学生发起在github上进行协同翻译获得了...

欲思
2014/07/24
20.1K
7

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
9
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
8
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
5
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部