Swift 双射字典

Supported Swift versions Supported swift platforms

双射字典是一种特殊的字典,它提供高效的 O(1) 时间复杂度的双向访问,使其成为反向查找性能是关键考虑因素的理想选择。 但是,这会增加内存使用量。

文档 »

基本用法

双射字典与标准库中的标准字典类型非常相似,共享许多相同的初始化器、方法和属性。 主要区别在于它能够双向访问元素。 在双射字典中,键和值分别被称为“左值”和“右值”,以避免混淆,因为任何一个都可以用来访问另一个。

以下示例演示如何从字典字面量创建一个双射字典,该字面量将 IANA 时区映射到其相应的 UTC 偏移量(不考虑夏令时)。

var timeZones: BijectiveDictionary = [
    "America/Los_Angeles": -8,
    "Europe/London": 0
    "Europe/Kiev": 2,
    "Asia/Singapore": 8
]

构建字典后,可以通过其左值(时区)或右值(UTC 偏移量)访问 timeZones 中的条目。

print(timeZones[left: "America/Los_Angeles"]) // prints -8
print(timeZones[right: 2]) // prints "Europe/Kiev"

当字典可变时,相同的下标也可用于设置值。

timeZones[left: "Asia/Seoul"] = 9
timeZones[right: -9] = "America/Anchorage"

安装

将 BijectiveDictionary 作为包依赖项添加到项目的包清单中

// swift-tools-version:6.0
import PackageDescription

let package = Package(
    name: "MyPackage",
    dependencies: [
        .package(
            url: "https://github.com/ladvoc/BijectiveDictionary.git",
            .upToNextMinor(from: "0.1.0")
        )
    ],
    targets: [
        .target(
            name: "MyTarget",
            dependencies: [
                .product(name: "BijectiveDictionary", package: "BijectiveDictionary")
            ]
        )
    ]
)

项目状态

该项目处于早期开发阶段,当前版本为 0.1.0。 目前,所有基本功能都已实现并经过测试。 但是,在 v1.0 版本发布之前,应完成以下任务

欢迎您的贡献!

许可证

本项目采用 MIT 许可证。 有关详细信息,请参阅LICENSE 文件