Ich habe eine diskriminierte Union, die ich als Argument für eine Funktion verwenden möchte, die ich in einer Signaturdatei verfügbar mache. Zur Zeit habe ich den Code als solche definiert:Freigeben diskriminierter Vereinigungen in Signaturdateien
Signature.fsi:
type Union =
| Part of string
| Part2 of int
val Func: Union -> unit
Mit Func in einer separaten fs-Datei definiert werden.
Das Problem ist, wenn ich dies tun die FS-Datei kann nicht die Union-Definition abholen, so dass Code, der einen Teil oder Part2-Wert erstellt fehlschlägt. Es sei denn, ich definiere die Verbindung erneut in der fs-Datei, die die Union verwendet.
So zum Beispiel:
Signature.fs:
type Union =
| Part of string
| Part2 of int
let Func input:Union =
ignore
OtherFile.fs
type Union =
| Part of string
| Part2 of int
let DoSomething =
Func(Part("Test"))
Ohne Union dies nicht jedes Mal neu zu definieren. Habe ich etwas Offensichtliches verpasst? Ich bin immer noch ziemlich grün, wenn es um F # geht.
das ist, was ich am Ende bin ... Ich bin nur irgendwie genervt Ich muss den Typ zweimal definieren, einmal in der Signatur und einmal im Rest des Moduls ... Ich hoffe, dass dies geändert wird Irgendwann. – Massif
Es ist jetzt 2015 und ich denke das Problem ist das immer noch da, dh.Wenn ich eine dissoziierte Vereinigung in einer FSI-Datei habe, dann habe ich sie in ihrer Gesamtheit in der .fs-Datei definiert. Das finde ich auch ein bisschen nervig. –