fsi.ShowDeclarationValues如何工作?

时间:2011-03-16 04:24:10

标签: f# f#-interactive f#-scripting

根据MSDN文档:

  

设置为false时,禁用   显示声明值   交互式会话的输出。

但是,以下示例交互式会话似乎与该摘要相矛盾。

> let x = 42;;

val x : int = 42

> fsi.ShowDeclarationValues <- false;;

val it : unit = ()

> let y = 42;;

val y : int

我没想到上面的最后一行。

我误解了什么吗?任何人都可以确认这是否是一个错误?

感谢。

2 个答案:

答案 0 :(得分:4)

在我看来没有显示最后一行的值,只显示绑定的名称和类型。

答案 1 :(得分:1)

Daniel是正确的 - 这会禁用只打印而不是声明本身。

有用的一种情况是,为某个值定义一些自定义打印机,以创建一个新窗口作为副作用(例如,表示要显示的图表或某些内容的值)。

例如,你可以这样写:

// 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!