Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz napisać język F# w programie Visual Studio Code za pomocą wtyczki Ionide, aby uzyskać doskonałe środowisko wieloplatformowe, uproszczone zintegrowane środowisko projektowe (IDE) z funkcją IntelliSense i refaktoryzacją kodu. Odwiedź Ionide.io, aby dowiedzieć się więcej na temat wtyczki.
Notatka
Przed rozpoczęciem upewnij się, że zainstalowano zarówno F#, jak i wtyczkę Ionide.
Eksplorowanie języka F# za pomocą skryptów i środowiska REPL
Najszybszym sposobem na rozpoczęcie pisania języka F# jest plik skryptu (.fsx) i F# Interactive (FSI). Nie są potrzebne żadne pliki projektu ani konfiguracja kompilacji — wystarczy utworzyć plik i rozpocząć kodowanie, podobnie jak w przypadku używania języka Python lub skryptu powłoki.
Tworzenie i uruchamianie skryptu
Otwórz terminal i uruchom:
touch hello.fsx
code hello.fsx
Dodaj następujący kod do pliku:
printfn "Hello from F# Interactive!"
let square x = x * x
[ 1 .. 10 ]
|> List.map square
|> printfn "Squares: %A"
Uruchom skrypt bezpośrednio z terminalu:
dotnet fsi hello.fsx
Powinieneś zobaczyć:
Hello from F# Interactive!
Squares: [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
Używanie interakcyjnej wersji REPL z programu VS Code
Skrypty są szczególnie potężne w połączeniu z integracją FSI Ionide. Utwórz nowy plik o nazwie MyFirstScript.fsx i dodaj 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 wyraz na formę Pig Latin. Następnym krokiem jest ocena w środowisku F# Interactive (FSI).
Wyróżnij całą funkcję (powinna mieć długość 11 wierszy). Po jej wybraniu przytrzymaj Alt i naciśnij Enter. W dolnej części ekranu zostanie wyświetlone okno terminalu, które powinno wyglądać podobnie do następującego:
pl-PL: 
Zrobiło to trzy rzeczy:
- Rozpoczął się proces FSI.
- Kod, który wyróżniłeś, został wysłany do procesu FSI.
- Proces FSI ocenił wysłany kod.
Ponieważ to, co zostało wysłane, to funkcja
toPigLatin "banana";;
Powinien zostać wyświetlony następujący wynik:
val it: string = "ananabay"
Teraz spróbujmy z samogłoską jako pierwszą literą. Wprowadź następujące informacje:
toPigLatin "apple";;
Powinien zostać wyświetlony następujący wynik:
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!
Notatka
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 informuje FSI o zakończeniu kodu.
Kiedy używać skryptów
Skrypty doskonale nadają się do eksplorowania pomysłów, tworzenia prototypów, analizy danych i zadań automatyzacji. Można odwoływać się do pakietów NuGet bezpośrednio w skrypcie za pomocą #r "nuget: PackageName" — nie jest wymagany żaden plik projektu.
Gdy kod wykracza poza pojedynczy plik lub musi zostać skompilowany i rozproszony, należy przejść do pełnego projektu. W następnej sekcji pokazano, jak to zrobić.
Tworzenie pierwszego projektu za pomocą Ionide
W przypadku większych programów, skompilowanych bibliotek lub kodu, który chcesz dystrybuować jako aplikację, użyjesz projektu platformy .NET. 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 pisać kod w edytorze do tego momentu, ale gdy to się stanie, wszystko jest już załadowane.
Wyjaśnienie kodu
Jeśli nie masz pewności co do tego, co w rzeczywistości robi kod, oto krok po kroku.
Jak widać, toPigLatin jest funkcją, która przyjmuje słowo jako dane wejściowe i konwertuje je na Pig-Latin reprezentację 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".
Możliwe, że zauważyłeś następujące kwestie w FSI:
val toPigLatin: word: string -> string
Oznacza to, że toPigLatin jest funkcją, która przyjmuje string jako dane wejściowe (nazywane word) i zwraca inny string. Jest to nazywane sygnaturą 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
isVowelokreśla, czy dany znak (c) jest samogłoską, sprawdzając, czy pasuje do jednego z podanych wzorców za pośrednictwem Pattern Matching:let isVowel (c: char) = match c with | 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' -> true |_ -> falseWyrażenie
if..then..else, które sprawdza, czy pierwszy znak jest znakiem samogłoski, 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 zwracania 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 jest wyrażeniem, ocena treści bloku then lub treści bloku else określa wartość zwracaną przez funkcję toPigLatin.
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 funkcjonalnością, dopóki nie zadziała cokolwiek.
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# do biblioteki, którą można uruchomić.
Aby rozpocząć, otwórz plik Program.fs utworzony wcześniej za pomocą interfejsu wiersza polecenia platformy .NET. Zauważysz, że jakiś kod już tam znajduje się.
Następnie utwórz nową module o nazwie PigLatin i skopiuj utworzoną wcześniej funkcję toPigLatin 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 funkcji main 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 funkcji main 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 elementów nie rozwiązał problemu, spróbuj usunąć katalog
ionide-fsharpna maszynie i ponownie zainstalować pakiet wtyczek. - Jeśli ładowanie projektu nie powiodło się (Zostanie wyświetlony Eksplorator rozwiązań języka F#), kliknij prawym przyciskiem myszy ten projekt i kliknij 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łaszaj problemy i współtwórz w repozytorium GitHub ionide-vscode-fsharp . Więcej informacji znajdziesz na 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, zobacz Przewodnik po języku F#.