Как определить переопределенные переменные или теневые переменные

При использовании одной и той же переменной дважды в одной и той же области видимости с компилятором F# предупреждение или обратная связь отсутствуют. например

let s = "abc"
let s = "def"
printfn "%A" s

результаты в

def

я видел
Есть ли способ получить предупреждения для теневых значений в F# в Visual Studio?
F# затенение значения - возможно ли отключить затенение значения в той же области видимости

Есть ли способ получить обратную связь о скрытых переменных либо с помощью предупреждения компилятора, либо визуально в редакторе. Как это может быть сделано?

1 ответ

Решение

Во-первых, теневое копирование переменных в одной области не является ошибкой или чем-то, что должно быть отключено. Как утверждает Joel Mueller, это legitimate, useful, and common,

По MSDN

На любом уровне области видимости, кроме области модуля, повторное использование значения или имени функции не является ошибкой. Если вы повторно используете имя, имя, объявленное позже, затеняет имя, объявленное ранее.


Функция " Синтаксическая раскраска " расширения Visual Studio F# Power Tools выделит текущую допустимую переменную и отобразит затененные переменные в светло-сером цвете. например

введите описание изображения здесь

Расширение можно установить из меню Visual Studio

Сервис -> Расширения и обновления
После открытия диалога
Выберите галерею Visual Studio
В правом верхнем окне поиска введите F# Power Tools
Поскольку я уже установил его, опция установки не отображается.

введите описание изображения здесь

Эту функцию можно активировать из меню Visual Studio.

Сервис -> Параметры -> Электроинструмент F# -> Общие -> Цвет синтаксиса -> Неиспользуемые объявления серого цвета

введите описание изображения здесь

С выключенной опцией:

введите описание изображения здесь

с опцией на:

введите описание изображения здесь

Примечание. После изменения параметра исходные файлы должны быть закрыты, а затем вновь открыты, чтобы изменения вступили в силу. Для этого не нужно перезапускать Visual Studio, но это будет иметь тот же эффект.

Спасибо Ringil за то, что он Ringil мое недействительное заявление.

Примечание из исходного кода:

Выделение неиспользованных объявлений


В настоящее время проверяются неиспользованные непубличные типы, методы, функции и объявления значений. Помните, что эта функция надежна только на 100%, когда в коде нет ошибки типа. Этот параметр доступен в общих параметрах. По умолчанию он отключен, поскольку могут возникнуть проблемы с производительностью больших файлов.

Список возможностей F# Power Tools

Другие вопросы по тегам