这个 Swift 模块旨在提供一种轻松创建数学区间的解决方案。
你可以使用以下方式导入此模块
import DLInterval
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)
注意:使用无穷大创建具有闭合边界的区间是不合法的。
你可以检查一个区间是否包含一个 double 类型的值
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
从 2 个区间创建并集
let firstInterval: Interval = -Double.infinity.>.0 // (-inf, 0]
let secondInterval: Interval = 0.><.1 // (0, 1)
let union = firstInterval.formUnion(secondInterval) // (-inf, 1)
注意:union
是一种名为 UnionInterval
的新数据类型。
查找 2 个区间的交集
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
。
从 v1.1.1
开始可用。
一个区间可以将其边界内的值裁剪
let interval = Interval([0..1])
let newValue = interval.clipValue(-0.5) // 0.0
注意:开放边界返回最接近边界的值
let interval = Interval((-1..1))
let newValue = interval.clipValue(2.0) // 0.99999999
该模块需要 Swift 4.0。
操作系统要求
选择你首选的依赖管理器
将依赖项添加到你的 Cartfile
中。
github "davidlivadaru/DLInterval"
如果只需要单个操作系统的框架,那么我建议你在执行 carthage update
时使用 --platform [iOS|macOS|watchOS|tvOS]
说明符。
将依赖项添加到你的 Podfile
中。
pod 'DLInterval'
在你的 Package.swift
中添加以下依赖项
dependencies: [
.package(url: "https://github.com/davidlivadaru/DLInterval.git", .upToNextMajor(from: "1.0.0"))
]
并更新你的目标的依赖项
targets: [
.target(
name: "YourTargetName",
dependencies: ["DLInterval"])),
]
该模块已通过单元测试覆盖,但是,错误总是会溜走。 如果你在模块中发现错误,请创建一个问题。
如果你想为修复错误或实现新功能做出贡献,请创建一个拉取请求。
DLInterval 在 MIT 许可证下发布。 有关详细信息,请参阅LICENSE。