我在视图控制器中有这个
let inputsContainerView: UIView = {
let view = UIView()
view.backgroundColor = UIColor.whiteColor()
view.translatesAutoresizingMaskIntoConstraints = false
view.layer.cornerRadius = 5
view.layer.masksToBounds = true
return view
}()
我不确定大括号内的初始化是如何工作的。这是速记吗?如果是这样,长形会是什么?
注意,我只想尝试理解这种语法,它可以正常工作。
答案 0 :(得分:0)
您正在定义一个函数并调用该函数来获取其结果。然后,将结果(view
(函数返回的值))指定为变量inputsContainerView
的初始值。
我称这个成语为 define-and-call ,它在这种情况下非常有用,即你想要初始化一个变量,但你的初始化程序需要包含几行代码。
答案 1 :(得分:0)
您正在定义一个不带参数的闭包并返回UIView
,然后您使用()
调用该闭包以返回分配给UIView
的{{1}} }。
这是速记吗?如果是这样,长形会是什么?
是的,闭包的完整形式指定了输入和输出。长格式会添加inputsContainerView
。 Swift能够推断() -> UIView in
中传递的值的输入和输出,以及将结果分配给()
常量的事实,这就是为什么你能够将它们关闭的原因。
UIView
您可以阅读有关闭包here.
的更多信息