Swift实例化结构体时如何省略传入参数的参数名
问题原因
你当前的写法不生效是因为下划线加错了位置:var _ name: String本质是把属性名定义为_,而非修改初始化参数标签。Swift 结构体自动生成的默认成员初始化器,参数标签默认和属性名完全一致,默认不支持直接省略。
实现方案
和函数省略参数标签的规则一致,你只需要自定义结构体的初始化器,在对应参数的外部标签位置加_即可,示例如下:
struct Dog { var name: String // 自定义初始化器,省略外部参数标签 init(_ name: String) { self.name = name } } // 实例化时无需传入参数名 var buddy = Dog("Buddy")
补充说明
如果结构体属性较多,你可以自定义多个初始化器,同时兼容省略参数名和带参数标签的调用方式,适配不同使用场景。
内容的提问来源于stack exchange,提问作者Stoic
相关产品推荐
相关产品推荐

