测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017 年 12 月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Rui Peres 维护。
Swift 的 Optional 非常出色,但它总是可以变得更好。这个仓库是添加一些实用方法的谦卑尝试。
filter: (Wrapped -> Bool) -> Optional<Wrapped>
let number: Int? = 3
let biggerThan2 = number.filter { $0 > 2 } // .Some(3)
let biggerThan3 = number.filter { $0 > 3 } // .None
mapNil: (Void -> Wrapped) -> Optional<Wrapped>
let number: Int? = 3
number.mapNil { 2 } // .Some(3)
let nilledNumber: Int? = nil
nilledNumber.mapNil { 2 } // .Some(2)
flatMapNil: (Void -> Optional<Wrapped>) -> Optional<Wrapped>
let number: Int? = 3
number.flatMapNil { .Some(2) } // .Some(3)
let nilledNumber: Int? = nil
nilledNumber.flatMapNil { .Some(2) } // .Some(2)
then: (Wrapped -> Void) -> Void
(类似于 [T]
的 forEach
)let number: Int? = 3
number.then { print($0) } // prints "3"
let nilledNumber: Int? = nil
nilledNumber.then { print($0) } // print won't be called
maybe: U -> (Wrapped -> U) -> U
(类似于 Haskell 的 maybe
)let number: Int? = 3
number.maybe(100) { $0 + 1 } // 4
let nilledNumber: Int? = nil
nilledNumber.maybe(100) { $0 + 1 } // 100
onSome: (Wrapped -> Void) -> Optional<Wrapped>
(在 .Some
分支中注入副作用)let number: Int? = 3
let sameNumber = number.onSome { print($0) } // prints "3" & returns .Some(3)
let nilledNumber: Int? = nil
let sameNilledNumber = nilledNumber.onSome { print($0) } // .None
onNone: (Void -> Void) -> Optional<Wrapped>
(在 .None
分支中注入副作用)let number: Int? = 3
let sameNumber = number.onNone { print("Hello World") } // .Some(3)
let nilledNumber: Int? = nil
let sameNilledNumber = nilledNumber.onNone { print("Hello World") } // prints "Hello World" & returns .None
isSome: Bool
let number: Int? = 3
let isSome = number.isSome // true
let nilledNumber: Int? = nil
let isSome = nilledNumber.isSome // false
isNone: Bool
let number: Int? = 3
let isSome = number.isNone // false
let nilledNumber: Int? = nil
let isSome = nilledNumber.isNone // true
Carthage
github "RuiAAPeres/OptionalExtensions"
CocoaPods
pod "OptionalExtensions"
手动
从 OptionalExtensions.swift 文件中获取并将它放入您的项目中。
我们乐意接受带有新方法或改进现有方法的拉取请求。文档或测试也总是受欢迎。
OptionalExtensions 在 MIT 许可证下授权,版本 2.0。 查看许可文件
版权所有 © 2015 Rui Peres