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 - 如果想添加分割线的同时 ...
随机推荐
- tcp连接以及网络I/O的几个问题
这段时间在做一些web方面开发的事情,用的Nginx+fast-cgi,计划深入看一下Nginx的内部实现和架构,以方便理解和调优.后面准备写一篇有关Nginx介绍和深度解析的文章,要深入理解web服 ...
- IOS基础开发一(ios程序运行过程)
今天做了一个简单的仿QQ登陆UI晒一晒:
- socket网络编程快速上手(二)——细节问题(1)
三.细节问题一个也不能少 Socket编程说简单也简单,程序很容易就能跑起来,说麻烦还真是麻烦,程序动不动就出问题.记得刚开始写网络代码的时候,那真是令人抓狂的经历,问题一个套一个,一会服务器起不来了 ...
- linux学习心得之目录树开端与/etc(图文)
linux学习心得之目录树开端与/etc(图文) linux中“一切皆文件”,学习linux一年了,在学习过程中对目录树的一点心得,分享给大家,有不对的地方敬请斧正. 不多说了,先上图: 根目录: / ...
- Enlightenment笔记
Enlightenment是一个文件管理器(曾经), 随着发展, 现在的目标已经是创建一个跟xfce, kde等一样的桌面环境. 作为一个用的人不多, 兼容性一般般, bug还不少的桌面环境, E的最 ...
- 改善C#公共程序类库质量的10种方法和工具
最近重构一套代码,运用以下几种方法,供参考. 1 公共方法尽可能的使用缓存 public static List<string> GetRegisteredCompany() { Str ...
- Thrift RPC实战(二) Thrift 网络服务模型
限于篇幅关系,在观察源码的时候,只列举了部分源代码 TServer类层次体系 TSimpleServer/TThreadPoolServer是阻塞服务模型 TNonblockingServer/THs ...
- gd库不支持jpeg的解决方法
杜工就不在这里啰嗦怎么遇到这个问题的了,如果你确实安装了的gd库,却发现无法支持jpeg格式的图片,可从下面找到答案. 原因是在编译gd库前,配置时未声明jpeg库路径.解决方法如下: 32位系统: ...
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...
- 分区数据库oracle自动分区
首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 oralce在linux下主动备份并删除5天前备份 导出脚本: export ORACLE_BASE=/opt/oracle ...