斯威夫特 - 关闭模式

时间:2016-06-23 10:31:26

标签: ios xcode swift dependency-injection

我正在阅读有关Swinject的文档,我不会理解这段代码中的两件事:

let container = Container()
container.register(AnimalType.self) { _ in Cat(name: "Mimi") }
container.register(PersonType.self) { r in
    PetOwner(pet: r.resolve(AnimalType.self)!)
}

如何将两个闭包单独站立并且不会嵌入方法调用中? 关闭没有返回任何对象,我没有看到任何返回'。那么容器如何才能获得“猫”#34;实例? (还有PetOwner实例)。

谢谢

1 个答案:

答案 0 :(得分:4)

  1. “两个闭包是独立的,不会嵌入方法调用中”
  2. 这就是所谓的“尾随封闭”:

      

    如果需要将闭包表达式作为函数的最终参数传递给函数,并且闭包表达式很长,则将其写为尾随闭包可能很有用。尾随闭包是一个闭包表达式,它写在它支持的函数调用的括号之外(和之后)......

    来源:Apple's documentation

    1. “闭包没有返回任何对象,我看不到任何'返回'”
    2. 该功能称为“隐式返回”:

        

      单表达式闭包可以通过从声明中省略return关键字来隐式返回单个表达式的结果...

      来源:Apple's documentation