测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2016年10月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 Hyun Min Choi 维护。
Swiftry 将 Scala 的 Try 带到 Swift。
初始化
let a = 3
let x = Swiftry {
if a % 2 == 0 {
return a / 2
} else {
throw MyError.error
}
}
let y = Swiftry { 5 }
let z = Swiftry<String>("abracadabra")
let e = Swiftry(error: MyError.error)
模式匹配
let x = Swiftry { ... }
switch x {
case let .success(s):
...
case let .failure(e):
...
}
=>
(orElse) 操作符
let x = 15
let y = 5
let z = 0
// both equal Swiftry.success(3)
Swiftry {
if z == 0 {
throw MyError.error
} else {
return y / z
}
} => Swiftry {
x / y
}
Swiftry {
if z == 0 {
throw MyError.error
} else {
return y / z
}
}.orElse(Swiftry {
x / y
})
>>-
(flatMap) 操作符
let divideTwo: (Int) -> Swiftry<Int> = { x in
Swiftry {
if x % 2 == 0 {
return x / 2
} else {
throw MyError.error
}
}
}
// both equal Swiftry.success(1)
let swiftryOneOp = Swiftry(8) >>- divideTwo >>- divideTwo >>- divideTwo
let swiftryOneCall = Swiftry(8).flatMap(divideTwo).flatMap(divideTwo).flatMap(divideTwo)
// both equal Swiftry.failure(MyError.myerror)
let swiftryFailureOp = swiftryOneOp >>- divideTwo
let swiftryFailureCall = swiftryOneCall.flatMap(divideTwo)
<^>
(map) 操作符
let f: (Int) -> Int = { return 2 * $0 }
// both equal Swiftry.success(10)
let tOp = Swiftry(5) <^> f
let tCall = Swiftry(5).map(f)
Swiftry 采用 MIT 许可。有关更多信息,请参阅 LICENSE 文件。