Začínáme s jazykem F# v editoru Visual Studio Code
F# můžete psát v
Poznámka
Než začnete, ujistěte se, že jste nainstalovali F# i modul plug-in Ionide.
Vytvoření prvního projektu pomocí Ionide
Pokud chcete vytvořit nový projekt F#, otevřete příkazový řádek a vytvořte nový projekt pomocí rozhraní příkazového řádku .NET CLI:
dotnet new console -lang "F#" -o FirstIonideProject
Po dokončení změňte adresář na projekt a otevřete Visual Studio Code:
cd FirstIonideProject
code .
Po načtení projektu v editoru Visual Studio Code by se mělo zobrazit podokno Průzkumníka řešení F# na levé straně okna otevřené. To znamená, že Ionide úspěšně načetl projekt, který jste právě vytvořili. V editoru můžete napsat kód do tohoto okamžiku, ale jakmile k tomu dojde, vše se načetlo.
Napsání prvního skriptu
Jakmile nakonfigurujete Visual Studio Code pro použití skriptování .NET Core, přejděte do zobrazení Průzkumníka a vytvořte nový soubor. Pojmenujte ho MyFirstScript.fsx.
Teď do něj přidejte následující kód:
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"
Tato funkce převede slovo na formu Pig Latin. Dalším krokem je vyhodnocení pomocí F# Interactive (FSI).
Zvýrazněte celou funkci (měla by mít délku 11 řádků). Jakmile je zvýrazněná, podržte klávesu Alt a stiskněte klávesu Enter. V dolní části obrazovky se zobrazí okno terminálu, které by mělo vypadat nějak takto:
Udělali jsme tři věci:
- Zahájil proces FSI.
- Odeslal kód, který jste zvýraznili, do procesu FSI.
- Proces FSI vyhodnotil kód, který jste odeslali.
Jelikož to, co jste odeslali, je funkce , můžete teď tuto funkci vyvolat pomocí FSI! V interaktivním okně zadejte následující:
toPigLatin "banana";;
Měl by se zobrazit následující výsledek:
val it: string = "ananabay"
Teď zkusíme použít samohlásku jako první písmeno. Zadejte následující:
toPigLatin "apple";;
Měl by se zobrazit následující výsledek:
val it: string = "appleyay"
Zdá se, že funkce funguje podle očekávání. Blahopřejeme, právě jste napsali svou první funkci F# v editoru Visual Studio Code a vyhodnotili jste ji pomocí FSI!
Poznámka
Jak jste si možná všimli, řádky v systému FSI jsou ukončeny znakem ;;
. Důvodem je to, že FSI umožňuje zadat více řádků.
;;
na konci informuje FSI o dokončení kódu.
Vysvětlení kódu
Pokud si nejste jistí, co kód skutečně dělá, tady je podrobný postup.
Jak vidíte, toPigLatin
je funkce, která přebírá slovo jako vstup a převádí ho na Pig-Latin reprezentaci tohoto slova. Pravidla pro toto jsou následující:
Pokud první znak ve slově začíná samohláskou, přidejte na konec slova slovo "yay". Pokud nezačíná samohláskou, přesuňte tento první znak na konec slova a přidejte do něj "ay".
Možná jste si všimli následujícího v aplikaci FSI:
val toPigLatin: word: string -> string
To uvádí, že toPigLatin
je funkce, která přebírá string
jako vstup (nazývá se word
) a vrací další string
. To se označuje jako podpis typu funkce, což je základní část jazyka F#, která je klíčem k pochopení kódu jazyka F#. Také si toho všimnete, když najedete myší na funkci ve Visual Studio Code.
V těle funkce si všimnete dvou různých částí:
Vnitřní funkce nazvaná
isVowel
, která určuje, zda daný znak (c
) je samohláska kontrolou, jestli odpovídá některému ze zadaných vzorů prostřednictvím Porovnávání vzorů:let isVowel (c: char) = match c with | 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' -> true |_ -> false
Výraz
if..then..else
, který zkontroluje, jestli je první znak samohláskou, a vytvoří návratovou hodnotu ze vstupních znaků na základě toho, jestli byl první znak samohláska nebo ne:if isVowel word[0] then word + "yay" else word[1..] + string(word[0]) + "ay"
Tok toPigLatin
probíhá následovně:
Zkontrolujte, jestli je první znak vstupního slova samohláska. Pokud ano, připojte "yay" na konec slova. Jinak přesuňte tento první znak na konec slova a přidejte do něj "ay".
Existuje jedna poslední věc, které si můžete všimnout: v jazyce F# neexistuje žádná explicitní instrukce pro návrat z funkce. Důvodem je, že jazyk F# je založený na výrazech a poslední výraz vyhodnocený v těle funkce určuje návratovou hodnotu této funkce. Vzhledem k tomu, if..then..else
je sám výrazem, vyhodnocení těla bloku then
nebo těla bloku else
určuje hodnotu vrácenou funkcí toPigLatin
.
Převod konzolové aplikace na generátor Pig Latin
Předchozí části tohoto článku ukázaly běžný první krok při psaní kódu jazyka F#: zápis počáteční funkce a jeho interaktivní spuštění se službou FSI. To se označuje jako vývoj řízený repl, kde REPL zkratka "Read-Evaluate-Print Loop". Je to skvělý způsob, jak experimentovat s funkcemi, dokud nebudete mít něco funkčního.
Dalším krokem při vývoji řízeném rePL je přesun pracovního kódu do souboru implementace jazyka F#. Potom ho může kompilátor F# zkompilovat do sestavení, které lze spustit.
Začněte tím, že otevřete soubor Program.fs, který jste vytvořili dříve pomocí rozhraní příkazového řádku .NET. Všimnete si, že tam už je nějaký kód.
Dále vytvořte nový module
s názvem PigLatin
a zkopírujte do ní dříve vytvořenou funkci toPigLatin
:
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"
Tento modul by měl být nad funkcí main
a pod deklarací open System
. Pořadí deklarací záleží v jazyce F#, takže funkci budete muset před voláním v souboru definovat.
Teď ve funkci main
zavolejte funkci generátoru Pig Latin na argumenty:
[<EntryPoint>]
let main args =
for arg in args do
let newArg = PigLatin.toPigLatin arg
printfn "%s in Pig Latin is: %s" arg newArg
0
Teď můžete konzolovou aplikaci spustit z příkazového řádku:
dotnet run apple banana
A uvidíte, že vypíše stejný výsledek jako váš soubor skriptu, ale tentokrát jako spuštěný program!
Řešení potíží s Ionidem
Tady je několik způsobů, jak můžete řešit určité problémy, na které můžete narazit:
- Pokud chcete získat funkce pro úpravy kódu Ionide, musíte soubory F# uložit na disk a do složky, která je otevřená v pracovním prostoru editoru Visual Studio Code.
- Pokud jste v systému provedli změny nebo nainstalovali požadavky ionide s otevřeným editorem Visual Studio Code, restartujte Visual Studio Code.
- Pokud máte v adresářích projektu neplatné znaky, ionide nemusí fungovat. Pokud se jedná o tento případ, přejmenujte adresáře projektu.
- Pokud žádný z příkazů Ionide nefunguje, zkontrolujte klávesové zkratky editoru Visual Studio Code, abyste zjistili, zda je nepřepisujete omylem.
- Pokud je Ionide na vašem počítači nefunkční a žádná z výše uvedených možností váš problém nevyřešila, zkuste odstranit adresář
ionide-fsharp
na svém počítači a přeinstalovat sadu modulů plug-in. - Pokud se projektu nepodařilo načíst (zobrazí se to v průzkumníku řešení F#), klikněte pravým tlačítkem myši na tento projekt a poté klikněte na Zobrazit podrobnosti, abyste získali další diagnostické informace.
Ionide je opensourcový projekt vytvořený a spravovaný členy komunity F#. Nahlašte problémy a neváhejte přispívat do úložiště ionide-vscode-fsharp na GitHubu.
Můžete také požádat o další pomoc od vývojářů Ionide a komunity F# v kanálu Ionide Gitter.
Další kroky
Další informace o F# a funkcích jazyka najdete v Tour of F#.