class Generators

public class Generators {}

功能:包含辅助函数的类,可帮助开发人员编写自己的生成器。

static func generate<T>(() -> T)

public static func generate<T>(body: () -> T): Generator<T> 

功能:通过重复调用函数生成值的生成器。

参数:

  • body: () -> T - 被调用的生成器闭包。

返回值:

static func iterable<T>(RandomSource, Array<T>)

public static func iterable<T>(random: RandomSource, collection: Array<T>): Generator<T>

功能:通过从数组中随机选取来生成值的生成器。

参数:

  • random: RandomSource - 随机数。
  • collection: Array<T> - 被选取数字的数组。

返回值:

static func lookup<T>(RandomSource) where T <: Arbitrary<T>

public static func lookup<T>(random: RandomSource): Generator<T> where T <: Arbitrary<T>

功能:通过 T 的 Arbitrary 实例提供的生成器。

参数:

返回值:

static func mapped<T, R>(RandomSource,(T) -> R) where T <: Arbitrary<T>

public static func mapped<T, R>(random: RandomSource, body: (T) -> R): Generator<R> where T <: Arbitrary<T>

功能:获取 T 的 Arbitrary 实例提供的生成器,并使用函数体生成 R 类型的值。

参数:

  • random: RandomSource - 随机数。
  • body: (T) -> R - 生成 R 类型的值。

返回值:

static func mapped<T1, T2, R>(RandomSource, (T1, T2) -> R) where T1 <: Arbitrary<T1>, T2 <: Arbitrary<T2>

 public static func mapped<T1, T2, R>(random: RandomSource, body: (T1, T2) -> R): Generator<R> where T1 <: Arbitrary<T1>, T2 <: Arbitrary<T2>

功能:获取 T1,T2 的 Arbitrary 实例提供的生成器,并使用函数体生成 R 类型的值。

参数:

  • random: RandomSource - 随机数。
  • body: (T1, T2) -> R - 生成 R 类型的值。

返回值:

static func mapped<T1, T2, T3, R>(RandomSource, (T1, T2, T3) -> R) where T1 <: Arbitrary<T1>, T2 <: Arbitrary<T2>, T3 <: Arbitrary<T3>

public static func mapped<T1, T2, T3, R>(random: RandomSource, body: (T1, T2, T3) -> R): Generator<R>
            where T1 <: Arbitrary<T1>, T2 <: Arbitrary<T2>, T3 <: Arbitrary<T3> 

功能:获取 T1,T2,T3 的 Arbitrary 实例提供的生成器,并使用函数体生成 R 类型的值。

参数:

  • random: RandomSource - 随机数。
  • body: (T1, T2,T3) -> R - 生成 R 类型的值。

返回值:

static func mapped<T1, T2, T3, T4, R>(RandomSource, (T1, T2, T3, T4) -> R) where T1 <: Arbitrary<T1>, T2 <: Arbitrary<T2>, T3 <: Arbitrary<T3>, T4 <: Arbitrary<T4>

public static func mapped<T1, T2, T3, T4, R>(random: RandomSource, body: (T1, T2, T3, T4) -> R): Generator<R>
            where T1 <: Arbitrary<T1>, T2 <: Arbitrary<T2>, T3 <: Arbitrary<T3>, T4 <: Arbitrary<T4>

功能:获取 T1,T2,T3,T4 的 Arbitrary 实例提供的生成器,并使用函数体生成 R 类型的值。

参数:

  • random: RandomSource - 随机数。
  • body: (T1, T2,T3,T4) -> R - 生成 R 类型的值。

返回值:

static func pick<T>(RandomSource, Array<Generator<T>>)

public static func pick<T>(random: RandomSource, variants: Array<Generator<T>>): Generator<T> 

功能:通过从生成器数组中随机选取来生成值的生成器。

参数:

返回值:

static func single<T>(T)

public static func single<T>(value: T): Generator<T>

功能:生成器始终返回同一个值。

参数:

  • value: T - 生成器返回的值。

返回值:

static func weighted<T>(RandomSource, Array<(UInt64, Generator<T>)>)

public static func weighted<T>(random: RandomSource, variants: Array<(UInt64, Generator<T>)>): Generator<T>

功能:通过从成对数组(权重、生成器)中随机选取来生成值的生成器。

参数:

  • random: RandomSource - 随机数。
  • variants: Array<(UInt64, Generator<T>)> - 数组(权重、生成器)。

返回值:

class LazySeq

public class LazySeq<T> <: Iterable<T> {
    public init()
    public init(element: T) 
}

功能:延迟计算的 T 类型值序列。用于在迭代时计算和记忆值。 这是完全不可变的,每次操作都会产生一个新的序列。

父类型:

init()

public init()

功能:构造器。

init(T)

public init(element: T) 

功能:构造器。

参数:

  • element: T - 初始元素。

func append(T)

public func append(element: T): LazySeq<T>

功能:增加一个元素。

参数:

  • element: T - 被增加的元素。

返回值:

  • LazySeq<T> - 增加元素后的序列。

func concat(LazySeq<T>)

public func concat(other: LazySeq<T>): LazySeq<T>

功能:增加一个序列到此序列中。复杂度为 O(1) 。

参数:

  • other: LazySeq<T> - 被增加的序列。

返回值:

  • LazySeq<T> - 增加元素后的序列。

func iterator()

public func iterator(): Iterator<T>

功能:实现序列的迭代器。

返回值:

func map<U>((T) -> U)

public func map<U>(body: (T) -> U): [LazySeq](#class-lazyseq)<U> 

功能:对序列中的每个元素执行闭包处理。

参数:

  • body: (T) -> U - 对每个元素执行的闭包。

返回值:

  • LazySeq<U> - 处理后的序列。

func mixWith(LazySeq<T>)

public func mixWith(other: LazySeq<T>): LazySeq<T>

功能:将新序列穿插进原序列中。 例如:{1,2,3,4}.mixWith({5,6,7}) -> {1,5,2,6,3,7,4}

参数:

  • other: LazySeq<T> - 待插入的序列。

返回值:

  • LazySeq<U> - 处理后的序列。

func prepend(T)

public func prepend(element: T): LazySeq<T>

功能:将新序列插进原序列的开头。

参数:

  • other: LazySeq<T> - 待插入的序列。

返回值:

  • LazySeq<U> - 处理后的序列。

static func mix(LazySeq<T>,LazySeq<T>)

public static func mix(l1: LazySeq<T>, l2: LazySeq<T>) 

功能:两个序列穿插混合成一个。 例如:mix({1,2,3,4}, {5,6,7}) -> {1,5,2,6,3,7,4}

参数:

  • l1: LazySeq<T> - 待穿插的序列。
  • l2: LazySeq<T> - 待穿插的序列。

返回值:

  • LazySeq<U> - 处理后的序列。

static func mix(LazySeq<T>,LazySeq<T>,LazySeq<T>)

public static func mix(l1: LazySeq<T>, l2: LazySeq<T>, l3: LazySeq<T>) 

功能:三个序列穿插混合成一个。

参数:

  • l1: LazySeq<T> - 待穿插的序列。
  • l2: LazySeq<T> - 待穿插的序列。
  • l3: LazySeq<T> - 待穿插的序列。

返回值:

  • LazySeq<U> - 处理后的序列。

static func mix(LazySeq<T>,LazySeq<T>,LazySeq<T>,LazySeq<T>)

public static func mix(l1: LazySeq<T>, l2: LazySeq<T>, l3: LazySeq<T>, l4: LazySeq<T>) 

功能:四个序列穿插混合成一个。

参数:

  • l1: LazySeq<T> - 待穿插的序列。
  • l2: LazySeq<T> - 待穿插的序列。
  • l3: LazySeq<T> - 待穿插的序列。
  • l4: LazySeq<T> - 待穿插的序列。

返回值:

  • LazySeq<U> - 处理后的序列。

static func mix(LazySeq<T>,LazySeq<T>,LazySeq<T>,LazySeq<T>,LazySeq<T>)

public static func mix(l1: LazySeq<T>, l2: LazySeq<T>, l3: LazySeq<T>, l4: LazySeq<T>, l5: LazySeq<T>) 

功能:五个序列穿插混合成一个。

参数:

  • l1: LazySeq<T> - 待穿插的序列。
  • l2: LazySeq<T> - 待穿插的序列。
  • l3: LazySeq<T> - 待穿插的序列。
  • l4: LazySeq<T> - 待穿插的序列。
  • l5: LazySeq<T> - 待穿插的序列。

返回值:

  • LazySeq<U> - 处理后的序列。

static func of(Iterable<T>)

public static func of(iterable: Iterable<T>)

功能:从迭代器构造一个序列。

参数:

  • iterable: Iterable<T> - 待处理的迭代器。

返回值:

  • LazySeq<U> - 处理后的序列。

static func of(Array<T>)

public static func of(array: Array<T>)

功能:从数组构造一个序列。

参数:

  • array: Array<T> - 待处理的数组。

返回值:

  • LazySeq<U> - 处理后的序列。

class ShrinkHelpers

public class ShrinkHelpers {}

功能:提供对元组实现缩减迭代器的方法。

static func shrinkTuple<T0, T1>((T0, T1),Iterable<T0>,Iterable<T1>)

public static func shrinkTuple<T0, T1>(
    tuple: (T0, T1),
    t0: Iterable<T0>,
    t1: Iterable<T1>
): Iterable<(T0, T1)>

功能:实现元组的缩减迭代器。

参数:

  • tuple: (T0, T1) - 被缩减的元组。
  • t0: Iterable<T0> - 第一个元组成员的缩减迭代器。
  • t1: Iterable<T1> - 第二个元组成员的缩减迭代器。

返回值:

  • Iterable<(T0, T1)> - 元组缩减迭代器。

static func shrinkTuple<T0, T1, T2>((T0, T1, T2),Iterable<T0>,Iterable<T1>,Iterable<T2>)

public static func shrinkTuple<T0, T1, T2>(
    tuple: (T0, T1, T2),
    t0: Iterable<T0>,
    t1: Iterable<T1>,
    t2: Iterable<T2>
): Iterable<(T0, T1, T2)> 

功能:实现元组的缩减迭代器。

参数:

  • tuple: (T0, T1, T2) - 被缩减的元组。
  • t0: Iterable<T0> - 第一个元组成员的缩减迭代器。
  • t1: Iterable<T1> - 第二个元组成员的缩减迭代器。
  • t2: Iterable<T2> - 第三个元组成员的缩减迭代器。

返回值:

  • Iterable<(T0, T1, T2)> - 元组缩减迭代器。

static func shrinkTuple<T0, T1, T2, T3>((T0, T1, T2, T3),Iterable<T0>,Iterable<T1>,Iterable<T2>,Iterable<T3>)

public static func shrinkTuple<T0, T1, T2, T3>(
    tuple: (T0, T1, T2, T3),
    t0: Iterable<T0>,
    t1: Iterable<T1>,
    t2: Iterable<T2>,
    t3: Iterable<T3>
): Iterable<(T0, T1, T2, T3)> 

功能:实现元组的缩减迭代器。

参数:

  • tuple: (T0, T1, T2, T3) - 被缩减的元组。
  • t0: Iterable<T0> - 第一个元组成员的缩减迭代器。
  • t1: Iterable<T1> - 第二个元组成员的缩减迭代器。
  • t2: Iterable<T2> - 第三个元组成员的缩减迭代器。
  • t3: Iterable<T3> - 第四个元组成员的缩减迭代器。

返回值:

  • Iterable<(T0, T1, T2,T3)> - 元组缩减迭代器。

static func shrinkTuple<T0, T1, T2, T3, T4>((T0, T1, T2, T3, T4),Iterable<T0>,Iterable<T1>,Iterable<T2>,Iterable<T3>,Iterable<T4>)

public static func shrinkTuple<T0, T1, T2, T3, T4>(
    tuple: (T0, T1, T2, T3, T4),
    t0: Iterable<T0>,
    t1: Iterable<T1>,
    t2: Iterable<T2>,
    t3: Iterable<T3>,
    t4: Iterable<T4>
): Iterable<(T0, T1, T2, T3, T4)> 

功能:实现元组的缩减迭代器。

参数:

  • tuple: (T0, T1, T2, T3, T4) - 被缩减的元组。
  • t0: Iterable<T0> - 第一个元组成员的缩减迭代器。
  • t1: Iterable<T1> - 第二个元组成员的缩减迭代器。
  • t2: Iterable<T2> - 第三个元组成员的缩减迭代器。
  • t3: Iterable<T3> - 第四个元组成员的缩减迭代器。
  • t4: Iterable<T4> - 第五个元组成员的缩减迭代器。

返回值:

  • Iterable<(T0, T1, T2,T3,T4)> - 元组缩减迭代器。