Noetic Garden:Picos

Noetic Garden 是 millenomi 的一个梦想。

Noetic Garden Picos 是微小的软件包,其中包含我从一个项目带到另一个项目的、经常重复使用的小功能。欢迎在您的项目中使用它们。Picos 已经在 Apple OS、Linux 和 Windows 上进行了测试。

ElementsBuilder

ElementsBuilder 包包含了 ElementsBuilder 协议,该协议用于快速构建结果构建器,这些构建器可以将多个值收集到一个数组中。

要快速创建一个新的结果构建器类型,只需创建一个符合此协议并适当设置 Element 类型别名的类型即可。例如

@resultBuilder
struct IntsBuilder: ElementsBuilder {
    typealias Element = Int
}

然后您可以像这样使用结果构建器

@IntsBuilder var ints: [Int] {
    4
    8
    for int in [15, 16] {
        int
    }
    if jokeGoesTheFullDistance {
        23
        42
    }
}

通过向您的类型添加您自己的 buildExpressionbuildFinalResult 方法来自定义构建器。例如

@resultBuilder
struct IntsBuilder: ElementsBuilder {
    typealias Element = Int
    
    static func buildFinalResult(_ component: [Self.Element]) -> MyIntPackType {
        return .init(numbers: component)
    }
}

// …

@IntsBuilder var ints: MyIntPackType {  }

使用此软件包

将此仓库添加为 Swift Package Manager 依赖项

.package(url: "https://github.com/noeticgarden/pico-elementsbuilder.git", from: "1.0.0"),

然后,使用 ElementsBuilder 模块

dependencies: [
    .product("ElementsBuilder", package: "pico-elementsbuilder"),
]

问题和支持

使用此仓库的 Issues 选项卡报告问题。欢迎提交拉取请求,但需所有者审核。所有支持和 PR 接受均为尽力而为,不作保证。请友善待人。