Latest Version Swift Platforms

Swift Package Manager Cocoapods Cathage Manually

CodeCoverage License Contribution First Timers Friendly

Size Files

RawDog

RawDog 是一个 Swift 库,它通过算术运算扩展了 RawRepresentable 类型。它定义了两个协议和一个枚举,用于处理具有可能失败的初始化器和不会失败的初始化器的类型的算术。

类型

🧪 测试

该库已通过全面测试,代码覆盖率达 100%

💻 安装

Swift Package Manager

要使用 Swift Package Manager 将 RawDog 添加到你的项目中,请在你的 Package.swift 文件中添加以下依赖项

dependencies: [
    .package(url: "https://github.com/ChristianFox/RawDog.git", from: "1.0.0")
]

不要忘记将 RawDog 添加到你的目标依赖项中

targets: [
    .target(
        name: "YourTarget",
        dependencies: ["RawDog"]),
]

🛠️ 用法

要使用 RawDog,请使你的 RawRepresentable 类型遵循 ArithmeticForFallibleTypeArithmeticForInfallibleType 协议,具体取决于你的类型是否具有可能失败或不会失败的初始化器。

示例

这是一个结构体的示例,该结构体表示具有原始值的 SISeconds(基于 Dave DeLong 的 Time,这是该库的灵感来源),并遵循 ArithmeticForInfallibleType 协议

import RawDog

struct SISeconds: RawRepresentable, ArithmeticForInfallibleType {

	let rawValue: Double
	init(rawValue: Double) {
		self.rawValue = rawValue
	}
}

只需遵循 ArithmeticForInfallibleType 协议,你现在就可以执行以下任何操作

var a = SISeconds(rawValue: 60)
let b = SISeconds(rawValue: 3600)

let c = a + b // 3660
let d = a - b // 60
let e = a * b // 216000
let f = a / b // 60
a += b // 3660
a -= b // 60
a *= b // 216000
a /= b // 60

let aDouble = 2.0
let g = a ~+ aDouble // 62
let h = a ~- aDouble // 60
let i = a ~* aDouble // 120
let j = a ~/ aDouble // 60
a ~+= aDouble // 62
a ~-= aDouble // 60
a ~*= aDouble // 120
a ~/= aDouble // 60

🐕‍🦺 支持

提出 issue 以获得支持。

👷‍♂️ 贡献

欢迎提交 Pull Request。我欢迎所有技能水平的开发者帮助改进该库、修复错误或添加新功能。

对于重大更改,请先提出 issue 以讨论你想要更改的内容。

在提交 Pull Request 之前,请确保你的代码符合现有的代码风格和约定,并且所有测试均通过。此外,如果你要添加新功能,请务必包含单元测试以验证行为。

如果你有任何问题或需要帮助,请随时 提出 issue,我将尽力帮助你。

🪪 许可协议

RawDog 基于 MIT 许可证发布。有关更多信息,请参阅 LICENSE 文件。

Buy Me A Coffee