一些小工具,使 Swift 中 Range 的使用更加容易。
到目前为止,这是此包的唯一特性:一些用于泛型化 Range 的协议。
在 Swift 的标准库中,所有 Range 类型都遵循 RangeExpression
协议。 但是,这并没有提供太多信息:它仅保证 Range 的边界是可比较的,它可以包含一个值,并且它可能会被解析为给定集合中的 Range
。
此包添加了更多协议。 这些协议用于泛型地访问 Range 的成员。
RangeProtocol
: 所有 Range(甚至 NSRange
)都遵循的协议。 还包括有关上限是否为闭区间的信息。RangeWithLowerBound
: 任何具有下限的 Range,例如 a...
、a..<b
和 a...b
RangeWithUpperBound
: 任何具有上限的 Range,例如 ..<b
、...b
、a..<b
和 a...b
RangeWithLowerAndUpperBound
: 任何同时具有下限和上限的 Range,例如 a..<b
和 a...b
这些协议用于泛型地创建 Range。
RangeWhichCanBeInitializedWithOnlyLowerBound
: 任何只能用下限初始化的 Range,例如 a...
RangeWhichCanBeInitializedWithOnlyUpperBound
: 任何只能用上限初始化的 Range,例如 ..<b
或 ...b
RangeWhichCanBeInitializedWithBothLowerAndUpperBounds
: 任何可以用下限和上限初始化的 Range,例如 a..<b
或 a...b