Как работает fsi.ShowDeclarationValues? - PullRequest
1 голос
/ 16 марта 2011

В соответствии с документацией MSDN:

При значении false отключает отображение значений декларации в выходных данных интерактивного сеанса.

Однако следующеепример интерактивного сеанса, кажется, противоречит этому резюме.

> let x = 42;;

val x : int = 42

> fsi.ShowDeclarationValues <- false;;

val it : unit = ()

> let y = 42;;

val y : int

Я не ожидал последней строки выше.

Я что-то не так понял?Кто-нибудь может подтвердить, если это ошибка?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Мне кажется, что не показывал значение в последней строке, только имя и тип привязки.

1 голос
/ 16 марта 2011

Даниэль прав: это отключает только печать значений , а не самих объявлений .

Одна из ситуаций, когда это полезно, когда вы определяете некоторый пользовательский принтер для значения, которое создает новое окно как побочный эффект (например, значение, которое представляет диаграмму или что-то, что вы хотите отобразить).

Например, вы могли бы написать это:

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