我正在尝试在 F# 中创建一个结构来表示海图中的深度曲线。它必须包含一个坐标列表和一个指示深度的浮点数(例如“4.5 米”)。我是这样做的:
type Coord =
struct
val X : float
val Y : float
new(x,y) = { X = x ; Y = y }
end
type DepthCurve =
struct
val Coords : list<Coord>
val Depth : float
new(list_of_Coords, depth) = { Coords = list_of_Coords ; Depth = depth}
end
let myCoord1 = new Coord(1.,2.)
let myCoord2 = new Coord(3.,4.)
let myDepthCurve = new DepthCurve([myCoord1;myCoord2] , 5. )
我的问题是,这不允许我一次性创建多边形及其坐标,如下所示:
let myDepthCurve = {coords=[[1.;2.];[3.;4.]] , 5}
确实存在一个解决方案:
type Coord = { X : float; Y : float }
type 'a DepthCurve = {coords: 'a list;}
let myDepthCurve = {coords=[[1.;2.];[3.;4.]]};;
但它也不能让我在结构中拥有指示深度的浮点数,也不能让我将列表的类型限制为只有 Coords。
我如何结合两全其美?