2016-02-27 19 views
7

Podczas używania tej samej zmiennej dwa razy w tym samym zakresie z kompilatorem F # nie ma ostrzeżenia ani informacji zwrotnej. na przykładJak zidentyfikować zmienne zdefiniowane na nowo lub zmienne w tle

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

skutkuje

def 

Widziałem
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

Czy istnieje sposób, aby uzyskać opinię na temat zacienionych zmiennych albo przez ostrzeżenia kompilatora lub wizualnie w edytorze. Jak to zrobić?

+1

Dzięki tokarskie to do właściwego pytania i odpowiedzi :-). Myślałem, że twoja (teraz usunięta) odpowiedź na wczorajsze pytanie na ten temat była naprawdę przydatna i powinna być gdzieś przechowywana! –

+0

Podziękowania powinny być przekazywane osobie, która utworzyła tę funkcję. Którym jesteście wdzięczni. Dziękuję również Jackowi za zwrócenie uwagi na jedno z wcześniej zadawanych pytań. –

Odpowiedz

9

Po pierwsze, shadowing zmiennych w tym samym zakresie nie jest błędem lub czymś, co powinno zostać wyłączone. Jak podaje Joel Mueller, jest to legitimate, useful, and common.

Per MSDN

Na każdym poziomie zakresu innego niż zakres modułu, nie jest błędem ponowne nazwę wartości lub funkcji. Jeśli ponownie użyjesz nazwy, nazwa zadeklarowana jako zacieni poprzednią nazwę.


Syntax Coloring cechą Visual Studio rozszerzenie F# Power Tools zaprezentuje aktualny ważny zmienną i pokazać TSO zmienne jako jasnoszarym. na przykład

enter image description here

Rozszerzenie można zainstalować z menu Visual Studio

Narzędzia -> Rozszerzenia i aktualizacje
Po otwarciu okna
Wybierz Visual Studio Gallery
W prawym górnym polu wyszukiwania wpisz F # Elektronarzędzia
Ponieważ już je zainstalowałem, opcja instalacji nie jest wyświetlana.

enter image description here

Funkcja ta może być aktywowane z menu Visual Studio

Narzędzia -> Opcje -> F Narzędzia # POWER -> Ogólne -> kolorowanie składni -> Szary z niewykorzystanych deklaracje

enter image description here

Z wyłączoną opcją:

enter image description here

z opcją na:

enter image description here

Uwaga: Po zmianie opcję plik (i) źródło musi być zamknięty, a następnie ponownie, aby zmiany odniosły skutek.Program Visual Studio nie musi być ponownie uruchamiany, ale spowoduje to taki sam efekt.

Podziękowania dla Ringil za odnotowanie mojego wcześniejszego nieprawidłowego oświadczenia.

Uwaga z kodu źródłowego:

Prawie Siwy z nieużywanych deklaracji


Obecnie niewykorzystane niepublicznych typy, metody, funkcje i wartości oświadczenia są sprawdzane. Pamiętaj, że ta funkcja jest niezawodna tylko w 100%, gdy kod nie zawiera błędów typu. To ustawienie jest dostępne w opcjach ogólnych. Domyślnie jest wyłączona , ponieważ mogą wystąpić problemy z wydajnością dużych plików.

F# Power Tools features list

+0

Musiałem ponownie uruchomić Visual Studio, aby uzyskać zmianę, a nie odbudować. – Ringil

+2

Kodowanie kolorów jest znacznie ładniejszą opcją niż ostrzeżenie. Nie chcę być ostrzeżony, gdy robię coś uzasadnionego, użytecznego i powszechnego. –

+0

@Ringil Po przeczytaniu komentarza przetestowałem je na kilka różnych sposobów. Jak zauważyłeś, odbudowanie nie jest niezawodnym sposobem. Jeśli po prostu zamknę edytowany plik źródłowy, a następnie ponownie go uruchomię, zmiana zacznie obowiązywać, nie będzie potrzeby ponownego tworzenia. Dzięki, będę edytować odpowiedź. –

Powiązane problemy