DLInterval Logo

Carthage compatible CocoaPods compatible Swift Package Manager Swift 4.0

这个 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。

操作系统要求

选择你首选的依赖管理器

1. Carthage

将依赖项添加到你的 Cartfile 中。

github "davidlivadaru/DLInterval"

如果只需要单个操作系统的框架,那么我建议你在执行 carthage update 时使用 --platform [iOS|macOS|watchOS|tvOS] 说明符。

2. CocoaPods

将依赖项添加到你的 Podfile 中。

pod 'DLInterval'

3. Swift Package Manager

在你的 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