Clamped:一个 Swift 属性包装器

Twitter: @cypher_poet

一个 Swift 属性包装器,用于自动将 `Comparable` 值限制在闭区间或半开区间内。

特性

安装

Xcode 项目

选择 File -> Swift Packages -> Add Package Dependency,然后输入 https://github.com/CypherPoet/ClampedPropertyWrapper

Swift Package Manager 项目

您可以将 ClampedPropertyWrapper 作为包依赖项添加到您的 Package.swift 文件中。

let package = Package(
    //...
    dependencies: [
        .package(url: "https://github.com/CypherPoet/ClampedPropertyWrapper", .upToNextMinor(from: "0.2.0")),
    ],
    //...
)

然后,在您的任何需要它的包目标中,将 ClampedPropertyWrapper 引用为“目标依赖项”。

targets: [
    .target(
        name: "YourLibrary",
        dependencies: [
          "ClampedPropertyWrapper",
        ],
        ...
    ),
    ...
]

然后,只需在您想使用它的地方 import ClampedPropertyWrapper 即可。

用法

基本示例:

import ClampedPropertyWrapper

struct Player {

    @Clamped(
        above: 0.0.nextDown,
        andBelow: .infinity
    )
    var xp: Double = 0.0


    @Clamped(to: 1..<100)
    var level: Int = 1


    @Clamped(above: 0.0, andBelow: Double.infinity)
    var number: Double = 1.0


    @Clamped(to: "A"..."Z")
    var firstInitial: Character = "A"


    @Clamped(to: 0.0...)
    var ammo: Double = 0.1


    @Clamped(to: ...100.0)
    var reputation: Double = .zero


    @Clamped(to: ..<20)
    var weeklyLeaderboardRankChange: Int = .zero
}

您还可以在 此项目的 Xcode Playground 中深入了解。:

Playground Example

贡献

非常欢迎对 ClampedPropertyWrapper 做出贡献。查看一些 问题模板 以获取更多信息。

💻 开发

要求

📜 生成文档

文档由 Swift Doc 生成。 安装说明可以在 这里 找到,一旦您设置好它,只需从命令行运行 ./Scripts/generate-html-docs.zsh 即可生成文档。

📝 请注意,这只会生成一个 .build/documentation 文件夹供您在本地查看。 该文件夹已被 git 忽略,并且存在一个 GitHub action,以自动在根级别生成文档并在项目的 gh-pages 分支上提供它们。

🏷 许可证

ClampedPropertyWrapper 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件