Swift声明中`{ SomeClass().func() }()`语法的含义是什么
关于该Swift语法的解答
大括号与末尾圆括号的作用
你代码里的写法是Swift中常用的自执行匿名闭包初始化写法,两个符号的作用分别是:
- 外层的
{ }:定义一个无入参的匿名闭包,闭包内部包裹实例创建、配置的逻辑,最终返回配置完成的UITextField实例。 - 末尾紧跟的
():表示立刻执行前面定义的闭包,把闭包执行后的返回值直接赋值给textField变量。
这类写法是否必需
完全不是语法强制要求的。
这种写法的核心优势是可以把变量的初始化、配置逻辑全部收拢在变量声明位置,代码聚合度更高,阅读时不需要跳转到其他方法/位置查找实例配置逻辑,尤其适合需要多步配置属性的UI实例初始化场景。
你的示例代码中闭包内部只有一行创建代码,完全可以简化成普通赋值写法,运行效果完全一致:
var textField = UITextField.textFieldWithInsets(insets: UIEdgeInsets(top:0, left:5, bottom:0, right:15))
只有当你需要在初始化时对实例做多步配置时,这种写法的优势才会体现,比如:
var textField: UITextField = { let tf = UITextField.textFieldWithInsets(insets: UIEdgeInsets(top:0, left:5, bottom:0, right:15)) tf.placeholder = "请输入搜索内容" tf.layer.cornerRadius = 6 tf.clearButtonMode = .whileEditing tf.returnKeyType = .search return tf }()
你也可以根据代码习惯,选择抽离独立工厂创建方法、在init/viewDidLoad生命周期方法中单独配置属性等其他写法,不存在语法层面的强制约束。
官方文档查阅位置
你可以查阅Swift官方文档的**闭包(Closures)**章节,该语法属于闭包表达式的基础用法,对应闭包调用的基础规则。
内容的提问来源于stack exchange,提问作者clearlight
相关产品推荐
相关产品推荐

