我正在阅读有关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实例)。
谢谢
答案 0 :(得分:4)
这就是所谓的“尾随封闭”:
如果需要将闭包表达式作为函数的最终参数传递给函数,并且闭包表达式很长,则将其写为尾随闭包可能很有用。尾随闭包是一个闭包表达式,它写在它支持的函数调用的括号之外(和之后)......
该功能称为“隐式返回”:
单表达式闭包可以通过从声明中省略return关键字来隐式返回单个表达式的结果...