让我们考虑一下这段代码:
type T =
{
a: int
}
let d =
[
"a", [{a = 0}; {a = 1}; {a = 2}]
"b", [{a = 3}; {a = 4}; {a = 5}]
] |> Map
Run Code Online (Sandbox Code Playgroud)
如果我想访问 a = 0 的数据:
d.["a"].[0].a <- works
d["a"].[0].a <- now works with F#6
d["a"][0] <- returns {a = 0}
Run Code Online (Sandbox Code Playgroud)
但
d["a"][0].a <- typecheck error This value is not a function and cannot be applied.
Run Code Online (Sandbox Code Playgroud)
如果我将表达式括在括号中:
(d["a"][0]).a <- it works
Run Code Online (Sandbox Code Playgroud)
这是预期的结果,还是可能是 F#6 解析错误?
最后,这样做是出于兼容性原因;参见 Don Syme 的回复:
https://github.com/dotnet/fsharp/issues/12549#event-5840475607
已发布允许使用此符号的请求,并且似乎已获得批准。
https://github.com/fsharp/fslang-suggestions/issues/1109