一个 Swift 包,提供一个类型 Delta<Element>
,包含三种情况:
source(Element)
target(Element)
transition(source: Element, target: Element)
Delta
类型代表一种包含性 OR 关系:要么有一个源元素可用,要么有一个目标元素可用,或者两者都可用。Delta
的行为类似于 Optional
,但它不是表示 0 或 1 个元素,而是表示 1 或 2 个元素。
源和目标被描述为 delta 的两个方面。可以通过可选的 source
和 target
属性访问这两个方面。便捷的方法,如 resolve(favoring:)
和 merge(coalesce:)
也提供了对元素的访问。
使用 map(:)
、asyncMap(:)
、mapAny(:)
或 mapAll(:)
将一个 Delta
值转换为不同的 Delta
值。
Delta
类型也符合所有标准协议(取决于其 Element
类型的符合性):
Equatable(可比较)
Hashable(可哈希)
CustomDebugStringConvertible(自定义调试字符串转换)
Encodable(可编码)
EncodableWithConfiguration(可配置编码)
Decodable(可解码)
DecodableWithConfiguration(可配置解码)
Sendable(可发送)
BitwiseCopyable(按位可复制)
~Copyable(不可复制)
此外,Delta
符合 RandomAccessCollection
,允许遍历元素以及 Sequence
、Collection
和 BidirectionalCollection
提供的许多其他操作。