Затенение значений F # - можно ли отключить затенение значений в той же области

Я исправил ошибку в собственном коде из-за копирования / вставки. Одно и то же имя значения заменяется копией / вставкой в ​​той же области.

let func() =
    let a = 1
    let a = something_else
    ....

В C # я не буду компилировать. есть ли способ отключить затенение? по крайней мере, в пределах того же уровня?

Спасибо


person casbby    schedule 11.04.2015    source источник
comment
Нет, это невозможно   -  person John Palmer    schedule 11.04.2015
comment
возможный дубликат stackoverflow.com/questions/2844047/   -  person Hylaean    schedule 11.04.2015


Ответы (1)


Вы не можете отключить затенение в F # - это важная функция языка.

Однако вы можете указать компилятору выдавать предупреждение или ошибку, которые помогут вам выявить случаи случайного затенения.

В свойствах проекта добавьте --warnon:1182 < / a> в текстовое поле «Другие флаги» (на вкладке «Сборка» под раскрывающимся списком целевой платформы). Это вызывает предупреждение компилятора, когда вы случайно затеняете переменную и заставляете ее нигде не использовать. Если вы предпочитаете, чтобы эти случаи приводили к сбою компиляции, вы также можете добавить 1182 в текстовое поле «Особые предупреждения» в разделе «Обрабатывать предупреждения как ошибки» на вкладке «Сборка».

Наконец, установите расширение Visual F # Power Tools. Он обеспечивает дополнительную функциональность подсветки синтаксиса и указывает неиспользуемые переменные, чтобы их было легко обнаружить в вашем коде.

person Jack P.    schedule 11.04.2015
comment
Спасибо, Джек. Это именно то, что я искал. Я также заметил, что F # power pack делает это значение серым. С другой стороны, не могли бы вы подробнее рассказать в этом посте, почему слежение так важно для F #? Я не уверен, что нужно делать с помощью затенения. Кажется, что всю безопасность неизменности можно легко отменить с помощью затенения (я знаю, что затенение - это не мутация) - person casbby; 13.04.2015