Swift 2016-10-26 23:47
Swift 将任意操作建模为 success/failure 的类库 Result
回复:0 查看:4596 感兴趣:10 赞:0
Swift 2.0通过抛出和捕获ErrorType引入了错误处理。 Result通过封装结果来实现相同的目标。 Result抽象实现了强大的功能,如map和flatMap,使用result比throw更加合适。
示例代码:
typealias JSONObject = [String:AnyObject]
enum JSONError : ErrorType {
case NoSuchKey(String)
case TypeMismatch
}
func stringForKey(json: JSONObject, key: String) -> Result<String, JSONError> {
guard let value = json[key] else {
return .Failure(.NoSuchKey(key))
}
if let value = value as? String {
return .Success(value)
}
else {
return .Failure(.TypeMismatch)
}
}
相关开源代码
EFIconFont: 一个用 Swift 实现的 IconFont 封装
Swift Zip文件压缩与解压框架
EFResume - 一个普通的 Swift 简历模板
Swift 优雅的定时器及执行工具库 Each
Swift 解析、格式化及验证国际电话号码工具库 PhoneNumberKit
Swift 版 FlatBuffers(跨平台序列化库)FlatBuffersSwift
Swift 编写的 Github API 客户端 Github.swift
Swift OAuth授权库 SwiftyOAuth
Swift 音频处理库 TempiFFT
iOS通知中心封装库SwiftNotificationCenter