OptionalExtensions 3.0

OptionalExtensions 3.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017 年 12 月
SwiftSwift 版本4.0
SPM支持 SPM

Rui Peres 维护。



OptionalExtensions



CocoaPods
Swift 3.0
License MIT

为什么?

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