Wie funktioniert FSI.ShowDeclarationValues?
-
24-10-2019 - |
Frage
Nach dem MSDN -Dokumentaion:
Wenn Sie auf False eingestellt sind, deaktiviert die Anzeige von Deklarationswerten in der Ausgabe der interaktiven Sitzung.
Die folgende Beispiele für interaktive Sitzung scheint dieser Zusammenfassung jedoch zu widersprechen.
> let x = 42;;
val x : int = 42
> fsi.ShowDeclarationValues <- false;;
val it : unit = ()
> let y = 42;;
val y : int
Ich hatte die letzte Zeile oben nicht erwartet.
Habe ich etwas missverstanden? Kann jemand bestätigen, ob dies ein Fehler ist?
Vielen Dank.
Lösung
Daniel hat Recht - diese deaktiviert nur das Drucken der Werte und nicht das Erklärungen sich.
Eine Situation, in der dies nützlich ist, ist, wenn Sie einen benutzerdefinierten Drucker für einen Wert definieren, der ein neues Fenster als Nebeneffekt erstellt (z. B. einen Wert, der ein Diagramm oder etwas darstellt, das Sie anzeigen möchten).
Zum Beispiel könnten Sie Folgendes schreiben:
// Display all evaluated strings in a message box
fsi.ShowDeclarationValues <- false
fsi.AddPrinter(fun (s:string) ->
System.Windows.Forms.MessageBox.Show(s) |> ignore; "")
let a = "foo" // Evaluating this line doesn't show message box
let b = "bar" // (dtto)
a + b // .. but evaluating this line shows the message box!
Andere Tipps
Sieht mir das aus, dass es es nicht Zeigen Sie den Wert in der letzten Zeile an, nur den Namen und die Art der Bindung.