Box 2.0

Box 2.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2015年10月
SPM支持SPM

Ash FurrowGordon Fontenot维护。



Box 2.0

  • 作者
  • Rob Rix

Box

这是一个Swift微框架,实现了Box<T>MutableBox<T>,其中对于满足T: EquatableT提供了==/!=的实现。

Box通常用于解决值类型的局限性

  • 递归的structenum
  • 参数化的enum,其中多个case具有值

使用

包装和拆包Box

// Wrap:
let box = Box(1)

// Unwrap:
let value = box.value

改变MutableBox的值

// Mutation:
let mutableBox = MutableBox(1)
mutableBox.value = 2

构建递归值类型

struct BinaryTree {
    let value: Int
    let left: Box<BinaryTree>?
    let right: Box<BinaryTree>?
}

构建参数化的enum

enum Result<T> {
    case Success(Box<T>)
    case Failure(NSError)
}

更多信息请查看源代码。

集成

  1. 例如,将此仓库作为External/Box中的子模块添加

    git submodule add https://github.com/robrix/Box.git External/Box
    
  2. Box.xcodeproj拖放到你的.xcworkspace/.xcodeproj中。
  3. Box.framework添加到你的目标的Link Binary With Libraries构建阶段。
  4. 你可能还需要添加一个Copy Files阶段,该阶段将Box.framework(以及你需要的任何其他框架依赖项)复制到你的bundle的Frameworks目录中。如果你的目标是框架,你可能希望客户端应用程序包含Box.framework