F#中的记录没有简单的方法吗?

时间:2009-07-27 21:35:19

标签: f# instantiation record

在F#中,我可以这样做:

type coord = float * float  //Type for a 2D-float-tupple
let myDepthCurve1 = { coords = [(1., 2.); (3., 4.)]; depth = 9.4 }

但我不能这样做:

type coord = { longitude : float; latitude : float } //Type for a 2D-float-record
let myDepthCurve1 = { coords = [(longitude = 1., latitude = 2.); (longitude = 3., latitude = 4.)]; depth = 9.4 }

当coord类型记录中的字段被标记时,我是否无法一次性创建我的深度?

3 个答案:

答案 0 :(得分:8)

您应该将{}用于记录,而不是()。即:

type coord = { longitude : float; latitude : float } //Type for a 2D-float-record
let myDepthCurve1 = {
     coords = [ { longitude = 1.; latitude = 2. };
                { longitude = 3.; latitude = 4. }];
     depth = 9.4 }

答案 1 :(得分:1)

我认为如果您使用花括号而不是括号来构造“内联”记录表达式会更好。

答案 2 :(得分:1)

假设这样的类型:

输入x = {coords:coord list; depth:float} ;;

你可以这样写:

让myDepthCurve1 = {coords = [{longitude = 1。;纬度= 2.};                                    {经度= 3。; latitude = 4.}];      depth = 9.4} ;;