这可能是 F# 6 索引器错误吗?

Tho*_*mas 7 f#

让我们考虑一下这段代码:

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 解析错误?

Tho*_*mas 2

最后,这样做是出于兼容性原因;参见 Don Syme 的回复:

https://github.com/dotnet/fsharp/issues/12549#event-5840475607

已发布允许使用此符号的请求,并且似乎已获得批准。

https://github.com/fsharp/fslang-suggestions/issues/1109