测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2018年1月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✓ |
由 David Livadaru 维护。
这个 Swift 模块旨在提供一个解决方案,方便创建数学区间。
Interval
提供了构造函数来创建类似于数学中常用的区间
[1, 2]
和 (1, 2)
let closedClosed = Interval([1..2]) // [1, 2]
let openOpen = Interval((1..2)) // (1, 2)
为了方便,可以使用范围运算符
let closedClosed: Interval = 1...2 // [1, 2]
let closedOpen: Interval = 1..<2 // [1, 2)
对于半开区间,有一些新的运算符
.>.
- 第一边界是开区间.<.
- 第二边界是开区间.><.
- 两个边界都是开区间let closedOpen: Interval = 1.<.2 // [1, 2)
let openClosed: Interval = 1.>.2 // (1, 2]
let openOpen: Interval = 1.><.2 // (1, 2)
创建以无穷大为边界的区间
let negativeInfinity: Interval = -Double.infinity.>.0 // (-inf, 0]
let positiveInfinity: Interval = 0.><.Double.Infinity // (0, +inf)
注意:使用无穷大创建具有闭边界的区间会失败。
您可以检查一个区间是否包含一个双值
let closedOpen: Interval = 1.<.2
closedOpen.contains(1) // true
closedOpen.contains(2) // false
closedOpen.contains(1.1) // true
检查无穷大值
let closedOpen: Interval = 1.<.2
closedOpen.contains(Double.infinity) // false
closedOpen.contains(-Double.infinity) // false
let positiveInfinity: Interval = 0.><.Double.Infinity
positiveInfinity.contains(Double.infinity) // true
positiveInfinity.contains(-Double.infinity) // false
从两个区间创建并集
let firstInterval: Interval = -Double.infinity.>.0 // (-inf, 0]
let secondInterval: Interval = 0.><.1 // (0, 1)
let union = firstInterval.formUnion(secondInterval) // (-inf, 1)
注意,union
是一种名为 UnionInterval
的新数据类型。
要找到两个区间的交集
let firstInterval: Interval = -Double.infinity.><.1 // (-inf, 1)
let secondInterval: Interval = -1.><.5.0 // (-1, 5)
let intersection = firstInterval.intersection(with: secondInterval) // (-1, 1)
注意,Interval
的交集返回一个 Interval?
,而 UnionInterval
的返回值是 UnionInterval
。
模块需要 Swift 4.0。
操作系统需求
选择您首选的依赖管理器
将依赖关系添加到您的 Cartfile
中。
github "davidlivadaru/DLInterval"
如果您只需要单一操作系统中的框架,那么我建议在执行 carthage update
时使用 --platform [iOS|macOS|watchOS|tvOS]
规范符。
您必须使用以下方式导入模块
import DLInterval_iOS
import DLInterval_macOS
import DLInterval_watchOS
import DLInterval_tvOS
将依赖关系添加到您的 Podfile
中。
pod 'DLInterval'
您必须使用以下方式导入模块
import DLInterval
在您的 Package.swift
中添加以下依赖项
dependencies: [
.package(url: "https://github.com/davidlivadaru/DLInterval.git", .upToNextMinor(from: "1.0.0"))
]
并更新您的目标依赖
targets: [
.target(
name: "YourTargetName",
dependencies: ["DLInterval"])),
]
您必须使用以下方式导入模块
import DLInterval
模块由单元测试覆盖,但错误总是会在所难免。
如果您在该模块中发现错误,请创建一个 问题。
如果您想通过修复错误或实现新功能进行贡献,请创建一个 pull request。
DLInterval 根据 MIT 许可证发布。有关详细信息,请参阅 LICENSE。