我剛將原型組元升級到記錄。有一天它可能會成爲一個真正的階級。在此期間,我想這樣的轉換代碼:F#高階屬性訪問器
type Example = int * int
let examples = [(1,2); (3,4); (5,6)]
let descs = Seq.map (fst >> sprintf "%d") examples
這樣:
type Example = {
Field1 : int
Field2 : int
Description : string
}
let examples = [{Field1 = 1; Field2 = 2; Description = "foo"}
{Field1 = 3; Field2 = 4; Description = "bar"}
{Field1 = 5; Field2 = 6; Description = "baz"}]
let descs = Seq.map Description examples
的問題是,我希望得到一個功能Description : Example -> string
當我宣佈實例記錄,但我不「T。我探討了一些並嘗試過類的屬性,但這也不起作用。我是否在文檔中遺漏了某些內容,或者是否需要手動編寫高階訪問器? (這是我現在使用的解決方法。)
嗯,這是我在談論的解決方法。在呼叫站點編寫高階訪問器是冗長的,並且在記錄聲明之後寫入它很容易忘記。 – 2010-06-07 20:56:34
好的(「高階訪問器」在這裏是一個奇怪的標籤; lambda不是高階的)。是的,如果有「fun x - > x」的簡寫語法,那將會很不錯。因爲這是一個常見的習慣用法。 – Brian 2010-06-07 20:59:31
是的,在短時間內我想不出一個更好的名字。 – 2010-06-07 21:10:07