Unison中创建记录是否支持指定字段名及对应值?
Unison是否支持通过指定字段名及对应值的方式创建记录
支持。
Unison的记录是特殊的代数数据类型,官方文档提到的「创建记录值无需指定字段名、无额外开销」,指的是按位置传参的默认构造方式:只要传入参数的顺序、类型和记录定义时的字段顺序完全匹配,就可以直接构造实例,不需要额外书写字段名。
你偏好的显式指定字段名的构造方式完全可用,语法为在构造函数后跟随大括号,在大括号内以字段名 = 值的格式逐个赋值即可,参考示例:
-- 定义示例Volunteer记录类型 type Volunteer = Volunteer { name: Text, serviceHours: Nat, isActive: Bool } -- 显式指定字段名构造,不需要严格匹配类型定义里的字段顺序 myVolunteer = Volunteer { isActive = true, name = "李明", serviceHours = 136 }
这种写法的实际特性:
- 不强制要求字段书写顺序和类型定义顺序一致,只要所有必填字段都完成赋值、值的类型匹配即可正常编译
- 没有额外运行时开销,编译后的逻辑和按位置传参构造的记录完全一致
- 非常适合字段数量较多、相邻字段类型相同的场景,能避免参数顺序错位导致的逻辑错误,可读性优势明显,是实际开发中很常用的写法。
内容的提问来源于stack exchange,提问作者bbarker
相关产品推荐
相关产品推荐

