fsi.showdeclarationvaluesはどのように機能しますか?
-
24-10-2019 - |
質問
MSDN Documentaionによると:
falseに設定すると、インタラクティブセッションの出力に宣言値が表示されます。
ただし、次のサンプルインタラクティブセッションは、その要約と矛盾しているようです。
> let x = 42;;
val x : int = 42
> fsi.ShowDeclarationValues <- false;;
val it : unit = ()
> let y = 42;;
val y : int
上記の最後の行を期待していませんでした。
私は何かを誤解しましたか?これがバグかどうかを確認できますか?
ありがとう。
解決
ダニエルは正しいです - これは単にの印刷だけを無効にします 値 そして、ではありません 宣言 彼ら自身。
これが役立つ状況の1つは、副作用として新しいウィンドウを作成する値のカスタムプリンターを定義する場合です(例:チャートまたは表示するものを表す値)。
たとえば、これを書くことができます:
// 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!
他のヒント
それを私に見ています しなかった 最後の行の値を表示します。バインディングの名前とタイプのみを示します。
所属していません StackOverflow