假设我在 F# 中定义了一个模块来处理带有度量单位的向量:
module Vec
[<Measure>]
type m
type Vector3<[<Measure>] 'a> =
{
X : float<'a>
Y : float<'a>
Z : float<'a>
}
现在我想创建一个let
带有Vector3
. 我可以做类似的事情:
let my_var : Vector3<m> = {X = 1.0<m> ; Y = 1.0<m> ; Z = 1.0<m>};
我必须像上面那样做很多作业,所以我想知道,有没有办法简化以前的语法?就像是:
let my_var : Vector3<m> = { 1.0,1.0,1.0} //this don't compile
let my_var : Vector3<m> = {1.0<m> ; 1.0<m> ; 1.0<m>} //this don't compile either
我想:
- 避免测量单位规范(
1.0<m>
),这可能吗?不是m
隐含地从声明中推导出来的my_var : Vector3<m>
吗? - 避免使用记录字段名称(如第二个示例)。记录的字段名不是由编译器自己根据顺序推导出来的吗?