给定car示例JavaScript对象的Swift等效单行结构实现方法
Swift 等效JS对象声明的单行实现
针对原JS代码 const car = {type:"Fiat", model:"500", color:"white"};,完全匹配其语义、满足单行要求的Swift实现为:let car = ["type": "Fiat", "model": "500", "color": "white"]
实现说明:
- 对齐JS中
const的不可变绑定特性,Swift端使用let做常量声明,和原JS“不能对car重新赋值”的基础行为一致 - Swift会自动推导该字面量的类型为
[String: String],精准匹配原JS对象全字符串键值的结构 - 如果使用自定义Car结构体的方式实现,需要额外多行定义结构体的属性,不符合单行代码的实现要求
注意:Swift的
let绑定的字典是值类型,为完全不可变状态;而JS中const绑定的对象是引用类型,仅不能重新赋值引用,对象内部的属性是可以自由修改的,二者在内部可变性上存在一定差异
- 受Swift强类型规则限制,该字典不支持JS对象那样运行时动态新增任意类型字段;如需完全模拟JS的动态对象特性,可将类型显式标注为
[String: Any],但该写法会损失Swift的类型检查能力,日常开发中前者是最贴合原JS代码效果的简洁实现
内容的提问来源于stack exchange,提问作者user13192561
相关产品推荐
相关产品推荐

