swift-measures

一个包含一系列对象和协议的软件包,用于创建和转换 Swift 编程语言中的度量单位。

概述

暂无概述。

可用性

安装

Swift Package Manager 是一个用于管理 Swift 代码分发的工具,并且集成在 swift 编译器中。

  1. 将此软件包添加到你的 Package.swift 文件中的依赖项中。

    let package: Package = .init(
        ...
        dependencies: [
            .package(url: "https://github.com/bikecalc/swift-measures.git", branch: "main")
        ],
        ...
    )
  2. 在你的 Package.swift 文件中,将此软件包添加为你的目标依赖项。

    let package: Package = .init(
        ...
        targets: [
            .target(name: "MyTarget", dependencies: [
                .product(name: "Measures", package: "swift-measures")
            ]),
        ],
        ...
    )
  3. 在你的源代码中导入此软件包。

    import Measures

演示

  1. 创建一个符合 measurable 协议的维度。

    struct FuelEfficiency: Measurable {
        let coefficient: Double
        let constant: Double
        let symbol: String
        
        init(
            coefficient: Double,
            constant: Double = 0,
            symbol: String
        ) {
            self.coefficient = coefficient
            self.constant = constant
            self.symbol = symbol
        }
        
        static let base: Self = .kilometresPerLiter
    }
  2. 创建至少两个单位。

    extension FuelEfficiency {
        static let kilometresPerLiter: Self = .init(
            coefficient: Length.kilometre.coefficient / Volume.liter.coefficient,
            symbol: "Km/L"
        )
    
        static let metresPerLiter: Self = .init(
            coefficient: Length.metre.coefficient / Volume.liter.coefficient,
            symbol: "m/L"
        )
    }
  3. 使用值和单位初始化你的维度的度量。

    var measure: Measure<FuelEfficiency> = .init(5, .kilometresPerLiter)
  4. 将度量转换到你的另一个单位。

    measure.convert(to: .metresPerLiter)
    print(measure) // Prints "5000m/L"

文档

你可以访问文档页面以了解有关此软件包的更多信息。

贡献

贡献是使开源社区成为学习、激励和创造的绝佳场所的原因。 如果您希望做出贡献并成为该项目的一部分,请 fork 该存储库并创建一个拉取请求

  1. Fork 存储库
  2. 创建您的功能分支 git checkout -b feature/NewFeature
  3. 提交您的更改 git commit -m 'Added a new feature'
  4. 推送到你的分支 git push origin feature/NewFeature
  5. 打开一个拉取请求

报告错误

如果您发现错误,请创建一个 issue

联系维护者

如果您想分享您关于如何改进此存储库的想法,您可以联系代码所有者。 有关更多信息,请参见 CODEOWNERS.txt 文件。

支持此存储库

如果此存储库在某种程度上对您有用,请通过加星标来表示您的支持。

行为准则

为了成为一个真正伟大的社区,我们欢迎来自各行各业、具有不同背景和广泛经验的开发人员。一个多元化和友好的社区将拥有更多伟大的想法、更多独特的视角,并产生更多伟大的代码。我们将努力使这个社区欢迎每个人。 有关更多信息,请参见 CODEOFCONDUCT.md 文件。

许可证

在 Apache License v2.0 下分发,带有运行时库例外。 有关更多信息,请参见 LICENSE.md 文件。