Swift结构体声明报错:'let/var'不能嵌套在另一个'var/let'模式中
解决Swift结构体定义中'let/var cannot appear nested...'的报错
这个报错的原因很直接——你在结构体里用逗号分隔多个属性时,重复写了let/var关键字,违反了Swift的语法规则。
在Swift中,当你用逗号把多个属性放在同一个声明组里时(不管是同一行还是换行后用逗号衔接),只需要在第一个属性前写一次let或var,后续属性不需要重复添加关键字。你重复写的let/var会被识别成在同一个模式里嵌套了另一个变量声明,所以触发报错。
而当你只声明单个属性时,不存在这种重复关键字的问题,所以代码可以正常运行。
错误写法示例
// 错误:重复使用let struct test { let name: String, let dictionary: [String: String] } // 错误:重复使用var struct test { var name: String, var dictionary: [String: String] }
正确写法
方式1:共享关键字,逗号分隔属性
struct Test { // Swift规范:结构体名首字母大写 let name: String, dictionary: [String: String] } // 也可以写成一行 struct Test { let name: String, dictionary: [String: String] }
方式2:属性单独声明(更易读,推荐)
struct Test { let name: String let dictionary: [String: String] }
如果属性的可变特性不同(比如一个是只读let,一个是可修改var),必须分开单独声明,不能共享关键字:
struct Test { let name: String var dictionary: [String: String] }
内容的提问来源于stack exchange,提问作者Jay Dee
相关产品推荐
相关产品推荐

