SwiftIdentifier

一个轻量级的库,帮助定义 ID 类型。

要求

特性

SwiftIdentifier 解决了什么问题?

假设您有 UserBook 类型,它们都有一个 Int 类型的 ID

struct User {
    let id: Int
}

struct Book {
    let id: Int
}

并且有一个 userIDHandler 闭包

let userIDHandler: (Int) -> Void = { ... }

这里有两个主要问题。

使用 SwiftIdentifier 的解决方案

您可以轻松地为**每种类型定义不同的 ID 类型**!

struct User {
    typealias ID = Identifier<Self, Int>
    let id: ID
}
struct Book {
    typealias ID = Identifier<Self, Int>
    let id: ID
}

let user = User(id: 10)
let book = Book(id: 500)

// The argument type become clearer!
let userIDHandler: (User.ID) -> Void = { ... }

userIDHandler(user.id) // OK
userIDHandler(book.id) // Compile error!

其他特性

在您的项目中使用 SwiftIdentifier

要在 SwiftPM 项目中使用 SwiftIdentifier 库,请将以下行添加到 Package.swift 文件中的依赖项

.package(url: "https://github.com/jrsaruo/SwiftIdentifier", from: "1.1.2"),

并将 SwiftIdentifier 添加为目标的依赖项

.target(name: "<target>", dependencies: [
    .product(name: "SwiftIdentifier", package: "SwiftIdentifier"),
    // other dependencies
]),

最后,在您的源代码中添加 import SwiftIdentifier