我刚将原型组元升级到记录。有一天它可能会成为一个真正的阶级。在此期间,我想这样的转换代码: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