Как работает fsi.showdeclarationValues?
-
24-10-2019 - |
Вопрос
Согласно документу MSDN:
При установке FALSE отключает отображение значений объявления на выводе интерактивного сеанса.
Тем не менее, следующий пример интерактивного сеанса, по -видимому, противоречит этому сводке.
> let x = 42;;
val x : int = 42
> fsi.ShowDeclarationValues <- false;;
val it : unit = ()
> let y = 42;;
val y : int
Я не ожидал последней строки выше.
Я что -то неправильно понял? Кто -нибудь может подтвердить, если это ошибка?
Спасибо.
Решение
Даниэль прав - это отключает просто печать ценности а не декларации сами себя.
Одна ситуация, когда это полезно, заключается в том, что вы определяете какой-то пользовательский принтер для значения, которое создает новое окно в качестве побочного эффекта (например, значение, представляющее диаграмму или что-то, что вы хотите отобразить).
Например, вы можете написать это:
// 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!
Другие советы
Смотри мне, что это не Покажите значение в последней строке, только имя и тип привязки.