我可以扩展内置数组的索引器吗?

时间:2014-04-24 02:19:59

标签: f#

我想将自己的索引器添加到通用数组类型:

type 'T``[]`` with
    member this.Item(x: string) = 1  // test

但是,这会产生编译错误"表达式应该具有int类型,但这里有类型字符串(FS0001)。"

let a = [|1|]
let b = a.["aa"]      // error: FS0001
let c = a.Item("aa")  // this works.

我发现3年前被问过的这个question,答案表明它是一个FSharp错误。想确认是否仍然如此,或者说那时规格是否已更新?

1 个答案:

答案 0 :(得分:1)

Don Syme here回答了这个问题:

  

需要澄清规范,数组的索引器可能无法扩展。

     

我说通过http://fslang.uservoice.com可以最好地跟踪允许这些内容的建议。也就是说,这样做并不简单,因为数组索引器是"内置"到编译器并且没有F#或IL元数据表示。

所以Fsharp不支持。