2016-02-27 12 views
7

Wenn Sie dieselbe Variable zweimal im selben Bereich wie der F # -Compiler verwenden, erfolgt keine Warnung oder Rückmeldung. z.B.So identifizieren Sie neu definierte Variablen oder schattierte Variablen

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

Ergebnisse in

def 

Ich habe
gesehen Is there a way to have warnings for shadowing values in F# in Visual Studio?
F# value shadowing - is it possible to disable value shadowing within the same scope

Gibt es einen Weg, um Feedback über beschattete Variablen entweder durch eine Compiler-Warnung oder visuell im Editor. Wie kann das gemacht werden?

+1

Vielen Dank für diese in eine richtige Frage drehen & :-) beantworten. Ich dachte, deine (jetzt gelöschte) Antwort auf die gestrige Frage dazu wäre wirklich nützlich und sollte irgendwo aufbewahrt werden! –

+0

Der Dank sollte wirklich an die Person gehen, die das Feature erstellt hat. Wen immer du dank bist. Danke auch an Jack, dass er es in einer der oben erwähnten Fragen notiert hat. –

Antwort

9

Zunächst einmal ist das Spiegeln von Variablen im selben Bereich kein Fehler oder etwas, das deaktiviert werden sollte. Wie Joel Mueller angibt, ist es legitimate, useful, and common.

Per MSDN

auf jeder Ebene der Rahmen anders als Modul Umfang, ist es nicht ein Fehler auf Wert oder Funktionsnamen wiederzuverwenden. Wenn Sie einen Namen wiederverwenden, überschreibt der später deklarierte Name den zuvor angegebenen Namen.


Das Syntax Coloring Merkmal der Visual Studio-Erweiterung F# Power Tools wird die aktuell gültige Variable und zeigt die schattierten Variablen als hellgrau markiert. z.B.

enter image description here

Die Erweiterung kann

Tools von Visual Studio-Menü installiert werden -> Erweiterungen und Updates
Sobald der Dialog öffnen
Visual Studio Gallery
Wählen Im oberen Feld rechts Suche eingeben F # Power Tools
Da ich es bereits installiert habe, wird die Option zur Installation nicht angezeigt.

enter image description here

Die Funktion kann

Tools aus dem Visual Studio-Menü aktiviert werden -> Optionen -> F # Power Tools -> Allgemein -> Syntax Coloring -> Grau aus nicht verwendeten Erklärungen

enter image description here

Mit der Option ab:

enter image description here

mit Option auf:

enter image description here

Hinweis: Nach dem Ändern der Option, um die Quelldatei (en) muss geschlossen werden und dann für die Änderung wieder geöffnet wirksam werden.Visual Studio muss hierfür nicht neu gestartet werden, aber dies hat den gleichen Effekt.

Dank Ringil für die Feststellung meiner früheren ungültigen Aussage.

Hinweis aus dem Quellcode:

Vergrauung aus nicht verwendeten Erklärungen


Momentan nicht verwenden nicht öffentliche Typen, Methoden, Funktionen und Werte Erklärungen geprüft werden. Beachten Sie, dass diese Funktion nur zu 100% zuverlässig ist, wenn der Code keinen Typfehler aufweist. Diese Einstellung ist unter Allgemeine Optionen verfügbar. Es ist standardmäßig deaktiviert , da bei großen Dateien möglicherweise Leistungsprobleme auftreten.

F# Power Tools features list

+0

Ich musste Visual Studio neu starten, um die Änderung zu erhalten, nicht neu zu erstellen. – Ringil

+2

Die Farbcodierung ist eine viel schönere Option als eine Warnung wäre. Ich möchte nicht gewarnt werden, wenn ich etwas Legitimes, Nützliches und Gemeines mache. –

+0

@Ringil Nachdem ich dich gelesen habe, habe ich ein paar verschiedene Möglichkeiten getestet. Wie Sie festgestellt haben, ist der Wiederaufbau kein zuverlässiger Weg. Wenn ich die zu bearbeitende Quelldatei einfach schließe und sie dann wieder öffne, wird die Änderung wirksam, es ist keine Neuerstellung erforderlich. Danke, ich werde die Antwort bearbeiten. –