2009-07-27 52 views
0

在F#中我可以這樣做: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 } 

這是真的,我不能一氣呵成創建我depthurve當領域座標類型記錄被標記?

回答

7

您應該使用{}作爲記錄,而不是()。即:

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 } 
+0

除了它應該是;而不是在表達式{longitude = 1.,latitude = 2}中。 在使用中是否有任何系統模式,並且;在F#中? – loldrup 2009-07-28 18:12:44

+1

固定。該模式很簡單 - 逗號是一個元組生成操作符(請注意,它不需要括號),所以其他所有內容都必須使用分號來消除歧義。 – 2009-07-28 19:47:47

1

我覺得如果你使用大括號,而不是括號構建「內聯」記錄表達它會被罰款。

1

假設類型是這樣的:

type x = {coords:coord list;深度:float} ;;

你可以這樣寫:

讓myDepthCurve1 = {COORDS = {[經度= 1;緯度= 2。}; {經度= 3。緯度= 4.}]; depth = 9.4} ;;