Ich habe einen Code, der wie folgt aussieht:Wie kann ich die Zwischenergebnisse von jedem Schritt einer mehrstufigen Pipeline-Funktion erhalten?
this.GetItemTypeIdsAsListForOneItemTypeIdTreeUpIncludeItemType itemType.AutoincrementedId
|> Array.map (fun i -> i.AutoincrementedId)
|> Array.map (BusinessLogic.EntityTypes.getFullSetOfEntityTypeFieldValuesForItemTypeAid item.Autoincrementedid)
|> Array.fold Array.append [||]
|> Array.map (fun fv -> { fv with ReferenceAutoId = aid })
|> Array.toSeq
|> Seq.distinctBy (fun fv -> fv.Fieldname)
|> Seq.toArray
Manchmal solcher Code wird das ungewöhnliche Ergebnis, das ich erklären müssen. Normalerweise gibt es keinen Fehler im Code. In den Daten ist ein Fehler aufgetreten. Und ich muss erklären, warum diese Daten nicht korrekt sind. Was ist der beste Weg, es zu tun?
Ich möchte nur auf die Liste in jedem Schritt dieses Ausdrucks zu sehen.
Etwas wie:
func data
|> func2 && Console.WriteLine
|> func3 && Console.WriteLine
....
Eingang holen, teilen Sie es auf zwei. Übergeben Sie eine der Ausgaben an die nächste Funktion und die zweite Ausgabe an die Konsole.
Normalerweise gibt es keinen Fehler im Code. In den Daten ist ein Fehler aufgetreten. Und ich muss erklären, warum diese Daten nicht korrekt sind. – demas
Sie Titel und Frage sind irreführend. Sie bitten um Hilfe beim Debuggen, fragen dann aber nach dem besten Komponententest. Die Art, wie ich dies tun würde, ist, es als eine Zusammensetzung von Funktionen zu betrachten und jede Funktion einzeln zu testen. Wenn Ihr Test fundiert ist, sollte das Zusammenstellen der Funktionen keine unerwarteten Ergebnisse z. Fehler. Stellen Sie sich vor, Sie haben die Funktion a + b * c^d - fx/gx. Sie würden +, -, *, /,^und die Funktionen f und g getrennt testen. Durch das Ausführen von Mathe können Sie darauf vertrauen, dass der Ausdruck funktioniert, obwohl er aus einfacheren Funktionen/Ausdrücken besteht. –
Haben Sie [bahnorientierte Programmierung] (https://fsharpfforfunandprofit.com/posts/recipe-part2/) gesehen? –