假设我定义的模块来处理与计量单位向量在F#:简化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>
导出? - 避免使用记录字段名称(如第二个示例中所示)。基于命令,编译器本身是否可以导出记录的字段名称?
哦thanks..the新的建议是非常有用的.. – Heisenbug