Swift中能否为字典内元组元素添加命名?报错问题咨询
问题解答
你写的这种写法完全不可行,属于语法错误,Swift不支持这种类型声明方式。
正确的写法有两种:
1. 直接声明字典的完整类型
在变量名后用: 指定类型的格式明确字典的键值类型,其中值的元组带上命名:
private let GameWallDefinition: [String: (sprite: Int, x: CGFloat, y: CGFloat, z: Int)] = [ "LL3": (104, 0.0, 62.0, 10), "LL2": (99, 0.0, 60.0, 20), "L0": (94, 0.0, 0.0, 50) ]
之后你就能通过命名访问元组元素,比如GameWallDefinition["LL3"]?.x。
2. 用typealias简化类型声明
如果觉得元组类型写起来冗长,可以先给带命名的元组定义别名,再用别名声明字典:
typealias WallInfo = (sprite: Int, x: CGFloat, y: CGFloat, z: Int) private let GameWallDefinition: [String: WallInfo] = [ "LL3": (104, 0.0, 62.0, 10), "LL2": (99, 0.0, 60.0, 20), "L0": (94, 0.0, 0.0, 50) ]
报错原因
你错误地将类型信息放在了变量名后的括号中,这不符合Swift的语法规则。Swift中变量的类型声明必须遵循变量名: 类型的格式,而非变量名[类型]()这种写法。
内容的提问来源于stack exchange,提问作者CKJBeOS
相关产品推荐
相关产品推荐

