swift 经典代码收集 和 赏析
代码1:
protocol PickableEnum
{
var displayName: String { get }
var permanentID: String { get }
static var allValues: [Self] { get }
static func fromPermanentID(id: String) -> Self?
} //下面的扩展表面了这个协议的实例必须实现了RawRepresentable协议,并且字面值必须是Int类型
extension PickableEnum where Self: RawRepresentable, Self.RawValue == Int
{
var displayName: String
{
return Localised("\(self.dynamicType).\(self)")
} var permanentID: String
{
return String(self)
} static var allValues: [Self]
{
var result: [Self] = []
var value =
while let item = Self(rawValue: value)
{
result.append(item)
value +=
}
return result
}
//这个方法巧妙运用了函数式编程,通过id,在allValues数组中查询一个实现了此协议的对象
static func fromPermanentID(id: String) -> Self?
{
return allValues.indexOf { $.permanentID == id }.flatMap { self.init(rawValue: $) }
}
}
swift 经典代码收集 和 赏析的更多相关文章
- iOS开发——语法篇&swift经典语法总结
swift经典语法总结 1:函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需 ...
- js让菜单栏一直悬浮在顶部,经典代码
js让菜单栏一直悬浮在顶部,经典代码 很简单,你只需要把下面代码放到js中:$(function(){ //获取要定位元素距离浏览器顶部的距离 var na ...
- 如何在Swift的代码中使用OC的代码, 在OC的代码中使用Swift的代码?
https://www.cnblogs.com/upliver/p/5138160.html 如何在Swift的代码中使用OC的代码, 在OC的代码中使用Swift的代码? 随着苹果公司对Swift的 ...
- SQL经典短小代码收集
--SQL Server:Select TOP N * From TABLE Order By NewID() --开头到N条记录Select Top N * From 表--N到M条记录(要有主索引 ...
- Swift经典知识整理
1 关于Swift Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制.Swift 采用安全 ...
- 10个惊艳的Swift单行代码
几年前,一篇表述“10个Scala函数式单行代码”的文章非常受欢迎,并且随后立马出现了其他的语言版本,例如Haskell版本,Ruby版本,Groovy版本,Clojure版本,Python版本,C# ...
- Swift - 纯代码实现页面segue跳转,以及参数传递
下面通过一个例子说明如何在代码中进行segue页面的切换,以及参数的传递. 样例功能如下: 1,主界面中是一个列表(这个列表是在代码中实现) 2,点击列表项时,界面会切换到详情页面,同时传递改列表 ...
- 【iOS】swift 保持代码优美的10个方法
这篇Swift风格指南与你看到的其他的指南有所不同,此篇指南主要焦点集中在打印和Web展示的可读写上.我们创建此篇风格指南的目的,是为了让我们的图书.教程以及初学者套件中的代码保持优美和一致,即使我们 ...
- oc和swift对代码的分组,方便代码查找和导航用
OC中对代码的分组: 在OC中对代码分组的命令是#pragma mark 来实现的, 分组用的是: #pragma mark 分组名 添加分割线: #pragma mark - 如果想添加分割线的同时 ...
随机推荐
- BFS和DFS详解
BFS和DFS详解以及java实现 前言 图在算法世界中的重要地位是不言而喻的,曾经看到一篇Google的工程师写的一篇<Get that job at Google!>文章中说到面试官问 ...
- ie7,8下__flash__addCallback报错原因及解决方案
首先附张图,以直观说明错误的现象:(ie7.8)
- MongoDB学习2
MongoDB学习(翻译2) C#驱动之LINQ教程 介绍 本教程涵盖了1.8发布版本对linq查询的支持. 开始本教程之前,你应该至少阅读下C#驱动教程关于C#驱动的介绍 快速开始 首先,添加下面命 ...
- Oracle用脚本语言导入SCOTT用户
许多Oracle新手都遇到这样的问题,安装Oracle之后没有SCOTT用户,那就自己加入吧,打开Oracle 命令窗口复制下面SQL脚本直接输入就行了,包含了测试学习的DEPT.EMP.BONUS. ...
- MyEclipse从数据库表反向生成实体类之Hibernate方式(反向工程)
一.打开Myeclipse Database Explorer 二.新建[New..] 三.选择数据库,添加驱动 四.测试连接 五.选中数据库中的表单击右键选择[Hibernate Rever..] ...
- 论公司spring的滥用
这个公司每个项目用不同的一套开发框架,实在忍不住拿一个出来说说事.
- iOS 开发问题集锦(二)
办公机器原来是别人在用,Xcode也是用别人的账号下载的.昨天想升级Xcode的时候,发现没有密码,为了不打扰别人,也为了方便自己之后升级,于是乎把旧版本直接卸载掉,重新下载了全新的4.6版. 下载完 ...
- WEB相关知识和Tomcat服务器
WEB相关知识 1.Internet上供外界访问的Web资源分为: 静态web资源:指web页面中供人们浏览的数据始终是不变的. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间 ...
- ASP.NET4.5Web API及非同步程序开发系列3
ASP.NET4.5Web API及非同步程序开发系列(3) 接着上一篇博客的内容做一个补充,正好是一个大哥提出来的,我们看看一个有趣的现象. 请求相关问题的补充: 我们先在Controller中的定 ...
- net软件工程师求职简历
Net软件工程师求职简历 姓 名: 王静静 性 别: 女 出生日期: 1991-12 籍 贯: 河北 居住地: 北京 学 历: 专科 E-mail: 335659753@qq. ...