我想将自己的索引器添加到通用数组类型:
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错误。想确认是否仍然如此,或者说那时规格是否已更新?
答案 0 :(得分:1)
Don Syme here回答了这个问题:
需要澄清规范,数组的索引器可能无法扩展。
我说通过http://fslang.uservoice.com可以最好地跟踪允许这些内容的建议。也就是说,这样做并不简单,因为数组索引器是"内置"到编译器并且没有F#或IL元数据表示。
所以Fsharp不支持。