2014-04-24 15 views
10

Ich möchte meine eigene Indexer generische Array-Typ hinzuzufügen:Kann ich den Indexer des integrierten Arrays erweitern?

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

jedoch ergibt dies ein Übersetzungsfehler „expression Typ int haben wurde erwartet, aber hier hat string (FS0001) geben.“

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

fand ich diese question, die vor 3 Jahren gefragt wurde, und die Antwort vorgeschlagen, es ist ein FSharp Fehler. Möchten Sie bestätigen, ob dies immer noch der Fall ist oder ob die Spezifikation seither aktualisiert wurde?

+1

Ich schlage vor, Sie [ein Problem auf CodePlex] (https://visualfsharp.codeplex.com/workitem/list/basic). – Daniel

+0

@Daniel danke für den Vorschlag. Fehler bei CodePlex [hier] (https://visualfsharp.codeplex.com/workitem/47). – trek42

Antwort

1

bekam ich diese Frage beantwortet von Don Syme here:

Die Spezifikation geklärt werden muss, dass Indexer für Arrays können nicht verlängert werden.

Ich würde sagen, dass der Vorschlag, sie zuzulassen, am besten über http://fslang.uservoice.com verfolgt wird. Dies ist jedoch nicht einfach, da Array-Indexer dem Compiler "eingebaut" sind und keine F- oder IL-Metadatendarstellung haben.

So wird es nicht in Fsharp unterstützt.

Verwandte Themen