心智花园:Picos

心智花园是 millenomi 的一个梦想。

心智花园 Picos 是我从一个项目带到另一个项目的小型、常用功能的微小包。 欢迎在你的项目中使用它们。 Picos 在 Apple OS、Linux 和 Windows 上经过测试。

Nonempty(非空)

Nonempty 包包含了 Nonempty,一个包装器类型,你可以用它来断言一个集合是非空的。

你可以使用此类型来

你可以将其用作其自身的类型,或用作属性包装器,以继续访问底层集合类型的完整 API。

例如

var numbers = Nonempty(assert: [1, 2, 3, 4])

// Only perform operations that maintain the nonempty property:

numbers.remove(at: 0) // compiler error!
numbers.nonempty.append(5) // works!

let double = numbers.nonempty.map {
    $0 * 2
} // double is a Nonempty<[Int]>!

// Use the nonempty type as a collection itself:
for number in numbers {
    print(number)
}

// … and avoid optionals where possible:
let maybeFirst = numbers.first // Optional<Int>: 1
let first = numbers.nonempty.first // Int: 1

// Use this as a property wrapper:
@Nonempty var newNumbers = numbers
print(type(of: newNumbers)) // Array<Int>

// Access the modified API above via its projected value:
$numbers.append(6)
let last = $numbers.last // Int: 6

使用此包

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

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

然后,使用 Nonempty 模块

dependencies: [
    .product(name: "Nonempty", package: "pico-nonempty"),
]

问题和支持

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