Swiftry 0.1.4

Swiftry 0.1.4

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年10月
SwiftSwift 版本3.0
SPM支持 SPM

Hyun Min Choi 维护。



Swiftry 0.1.4

  • Hyun Min Choi

Swiftry

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 文件。