SBCommons 0.1.0

SBCommons 0.1.0

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

Ed Gamble 维护。



SBCommons 0.1.0

  • 作者:
  • Ed Gamble

Commons

Commons 是一系列独立的 Swift 抽象集合。

功能

函数

Swift 具有来自词法上下文的静态绑定的第一类函数。以几种定义良好的方式组合函数是一个常见需求。我们提供了以下函数,这些函数返回与 x 相关的函数:

  • Always - 总是返回 y
  • Complement - 返回 !pred(x)
  • Compose - 计算 g(f(x))
  • Disjoin - 返回 pred1(x) || pred2(x)
  • Conjoin - 返回 pred1(x) && pred2(x)
  • equalTo - 返回 pred(x, y)

其中 ypred{,1,2}fg 都是通过词法捕获的。

其他函数还包括在 SequenceType 上的 anyall,以及一组接受一个谓词并返回 SequenceType 的函数,如 allUsinganyUsingmapUsingappUsing

As, Any

此模式允许任何 Item(如果它有一个满足协议的属性),可以“采用”该协议。例如,考虑一个具有 属性的 Person 抽象:ssn、name 和年龄(以年为单位)

class Person : Equatable {
  let ssn  : String
  let name : String
  var age  : UInt
}

func == (lhs:Person, rhs:Person) -> Bool {
  return lhs.ssn == rhs.ssn
}

Person 无法比较,但在某些上下文中,您可能需要根据 ssnnameage 中的任何一个来比较人。您可以使用下面的方式来实现这一点,例如

let p1 = Person (ssn: "123", name: "Zack", age: 10)
let p2 = Person (ssn: "321", name: "Zoey", age: 9)

let younger = min(AsComparable (value: p1.age, item: p1), AsComparable (value: p2.age, item: p2)).item
younger.name // => "Zoey"

As 为三种常见的 Swift 协议实现:AsEquatableAsComparableAsHashable。还提供了 AsComparableInvert

Result

无处不在的

enum Result<V,E:ErrorType> {
  case Success(V)
  case Failure(E)
}

这实际上应为其他更完整、更全面的 GitHub 包所取代。

使用

通过以下方式访问框架

import SBCommons

安装

三种简单的安装选项

Apple 包管理器

在您的 Package.swift 文件中添加对 SBCommons 的依赖。

import PackageDescription

let package = Package (
  name: "<your package>",
  dependencies: [
    // ...
    .Package (url: "https://github.com/opuslogica/SBCommons.git",  majorVersion: 0),
    // ...
  ]
)

Cocoa Pods

source 'https://github.com/EBGToo/CocoaPodSpecs.git'
pod 'SBCommons', '~> 0.1'

Xcode

$ git clone https://github.com/opuslogica/SBCommons.git SBCommons

SBCommons Xcode 项目添加到您的 Xcode 工作区。