Rozpoczynanie pracy z językiem F# w programie Visual Studio Code
Język F# można napisać w programie Visual Studio Code za pomocą wtyczki Ionide, aby uzyskać doskonałe środowisko międzyplatformowe, uproszczone zintegrowane środowisko projektowe (IDE) z funkcją IntelliSense i refaktoryzacją kodu. Odwiedź Ionide.io , aby dowiedzieć się więcej na temat wtyczki.
Aby rozpocząć, upewnij się, że masz poprawnie zainstalowany język F# i wtyczkę Ionide.
Tworzenie pierwszego projektu za pomocą Ionide
Aby utworzyć nowy projekt języka F#, otwórz wiersz polecenia i utwórz nowy projekt przy użyciu interfejsu wiersza polecenia platformy .NET:
dotnet new console -lang "F#" -o FirstIonideProject
Po zakończeniu zmień katalog na projekt i otwórz program Visual Studio Code:
cd FirstIonideProject
code .
Po załadowaniu projektu w programie Visual Studio Code powinno zostać wyświetlone okienko Eksplorator rozwiązań języka F# po lewej stronie okna. Oznacza to, że aplikacja Ionide pomyślnie załadowała właśnie utworzony projekt. Możesz napisać kod w edytorze przed tym punktem w czasie, ale gdy tak się stanie, wszystko zakończyło się ładowanie.
Pisanie pierwszego skryptu
Po skonfigurowaniu programu Visual Studio Code do używania skryptów platformy .NET Core przejdź do widoku Eksploratora w programie Visual Studio Code i utwórz nowy plik. Nadaj mu nazwę MyFirstScript.fsx.
Teraz dodaj do niego następujący kod:
let toPigLatin (word: string) =
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' | 'o' | 'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word[0] then
word + "yay"
else
word[1..] + string(word[0]) + "ay"
Ta funkcja konwertuje słowo na formę Pig Latin. Następnym krokiem jest ocena przy użyciu interfejsu F# Interactive (FSI).
Wyróżnij całą funkcję (powinna mieć długość 11 wierszy). Po jej podświetleniu przytrzymaj klawisz Alt i naciśnij klawisz Enter. W dolnej części ekranu zostanie wyświetlone okno terminalu, które powinno wyglądać podobnie do następującego:
Zrobiło to trzy rzeczy:
- Proces fsI został uruchomiony.
- Wysłał on kod wyróżniony do procesu FSI.
- Proces FSI ocenił wysłany kod.
Ponieważ to, co zostało wysłane, było funkcją , można teraz wywołać tę funkcję za pomocą fsI! W oknie interaktywnym wpisz następujące polecenie:
toPigLatin "banana";;
Wynik powinien być następujący:
val it: string = "ananabay"
Teraz spróbujmy z samogłoską jako pierwszą literą. Wprowadź następujące informacje:
toPigLatin "apple";;
Wynik powinien być następujący:
val it: string = "appleyay"
Wygląda na to, że funkcja działa zgodnie z oczekiwaniami. Gratulacje. Właśnie napisałeś swoją pierwszą funkcję języka F# w programie Visual Studio Code i oceniliśmy ją za pomocą fsI!
Uwaga
Jak można zauważyć, wiersze w fsI są przerywane za pomocą ;;
. Dzieje się tak, ponieważ interfejs FSI umożliwia wprowadzanie wielu wierszy. Na ;;
końcu interfejs FSI informuje o zakończeniu kodu.
Wyjaśnienie kodu
Jeśli nie masz pewności co do tego, co w rzeczywistości robi kod, oto krok po kroku.
Jak widać, jest funkcją, toPigLatin
która przyjmuje słowo jako dane wejściowe i konwertuje je na reprezentację Pig-Latin tego słowa. Reguły dotyczące tego są następujące:
Jeśli pierwszy znak w słowie zaczyna się od samogłoski, dodaj wyraz "yay" na końcu słowa. Jeśli nie zaczyna się od samogłoski, przenieś ten pierwszy znak na koniec słowa i dodaj do niego znak "ay".
Być może w fsI zauważysz następujące kwestie:
val toPigLatin: word: string -> string
Oznacza to, że jest to funkcja, toPigLatin
która przyjmuje string
element jako dane wejściowe (o nazwie word
), i zwraca inny string
element . Jest to nazywane podpisem typu funkcji , podstawowym elementem języka F#, który jest kluczem do zrozumienia kodu F#. Zauważysz to również po umieszczeniu wskaźnika myszy na funkcji w programie Visual Studio Code.
W treści funkcji zauważysz dwie odrębne części:
Funkcja wewnętrzna o nazwie
isVowel
, która określa, czy dany znak (c
) jest samogłoską, sprawdzając, czy pasuje do jednego z podanych wzorców za pomocą dopasowywania wzorca:let isVowel (c: char) = match c with | 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' -> true |_ -> false
Wyrażenie
if..then..else
sprawdzające, czy pierwszy znak jest cyfrą, i tworzy wartość zwracaną z znaków wejściowych na podstawie tego, czy pierwszy znak był znakiem samogłoski, czy nie:if isVowel word[0] then word + "yay" else word[1..] + string(word[0]) + "ay"
Przepływ toPigLatin
jest zatem:
Sprawdź, czy pierwszy znak wyrazu wejściowego jest samogłoską. Jeśli tak jest, dołącz "yay" na końcu słowa. W przeciwnym razie przenieś ten pierwszy znak na koniec słowa i dodaj do niego znak "ay".
Jest jedna ostatnia rzecz, którą należy zauważyć: w języku F#nie ma jawnej instrukcji zwracanej z funkcji. Dzieje się tak, ponieważ język F# jest oparty na wyrażeniach, a ostatnie wyrażenie obliczane w treści funkcji określa wartość zwracaną tej funkcji. Ponieważ if..then..else
sama jest wyrażeniem, ocena treści then
bloku lub treści else
bloku określa wartość zwracaną przez toPigLatin
funkcję.
Przekształcanie aplikacji konsolowej w generator Pig Latin
W poprzednich sekcjach w tym artykule przedstawiono typowy pierwszy krok w pisaniu kodu języka F#: pisanie funkcji początkowej i wykonywanie jej interaktywnie za pomocą fsI. Jest to nazywane programowaniem opartym na języku REPL, gdzie REPL oznacza "Read-Evaluate-Print Loop". Jest to doskonały sposób na eksperymentowanie z funkcjami, dopóki nie będziesz mieć czegoś do pracy.
Następnym krokiem programowania opartego na środowisku REPL jest przeniesienie działającego kodu do pliku implementacji języka F#. Następnie można go skompilować za pomocą kompilatora języka F# w zestawie, który można wykonać.
Aby rozpocząć, otwórz utworzony wcześniej plik Program.fs za pomocą interfejsu wiersza polecenia platformy .NET. Zauważysz, że jakiś kod już tam znajduje się.
Następnie utwórz nową module
nazwę PigLatin
i skopiuj toPigLatin
utworzoną wcześniej funkcję w następujący sposób:
module PigLatin =
let toPigLatin (word: string) =
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' | 'o' | 'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word[0] then
word + "yay"
else
word[1..] + string word[0] + "ay"
Ten moduł powinien znajdować się powyżej main
funkcji i poniżej deklaracji open System
. Kolejność deklaracji ma znaczenie w języku F#, dlatego należy zdefiniować funkcję przed wywołaniem jej w pliku.
Teraz w main
funkcji wywołaj funkcję generatora Pig Latin na argumentach:
[<EntryPoint>]
let main args =
for arg in args do
let newArg = PigLatin.toPigLatin arg
printfn "%s in Pig Latin is: %s" arg newArg
0
Teraz możesz uruchomić aplikację konsolową z poziomu wiersza polecenia:
dotnet run apple banana
Zobaczysz, że zwraca ten sam wynik co plik skryptu, ale tym razem jako uruchomiony program!
Rozwiązywanie problemów z jonide
Poniżej przedstawiono kilka sposobów rozwiązywania niektórych problemów, które mogą wystąpić:
- Aby uzyskać funkcje edytowania kodu Ionide, pliki F# należy zapisać na dysku i wewnątrz folderu, który jest otwarty w obszarze roboczym programu Visual Studio Code.
- Jeśli wprowadzono zmiany w systemie lub zainstalowano wymagania wstępne Ionide za pomocą otwartego programu Visual Studio Code, uruchom ponownie program Visual Studio Code.
- Jeśli masz nieprawidłowe znaki w katalogach projektu, Ionide może nie działać. Zmień nazwę katalogów projektów, jeśli tak jest.
- Jeśli żadne z poleceń Ionide nie działa, sprawdź powiązania kluczy programu Visual Studio Code, aby sprawdzić, czy zostały one zastąpione przez przypadek.
- Jeśli Ionide jest uszkodzona na maszynie i żaden z powyższych nie rozwiązał problemu, spróbuj usunąć
ionide-fsharp
katalog na maszynie i ponownie zainstalować pakiet wtyczek. - Jeśli ładowanie projektu nie powiodło się (Eksplorator rozwiązań języka F#to pokaże), kliknij prawym przyciskiem myszy ten projekt i kliknij pozycję Zobacz szczegóły, aby uzyskać więcej informacji diagnostycznych.
Ionide to projekt typu open source utworzony i obsługiwany przez członków społeczności języka F#. Zgłoś problemy i możesz bezpłatnie współtworzyć plik ionide-vscode-fsharp w repozytorium GitHub.
Możesz również poprosić o dalszą pomoc od deweloperów Ionide i społeczności języka F# w kanale Ionide Gitter.
Następne kroki
Aby dowiedzieć się więcej na temat języka F# i funkcji języka, zapoznaj się z przewodnikiem po języku F#.