Začínáme s jazykem F# v editoru Visual Studio Code

V editoru Visual Studio Code můžete psát F# s modulem plug-in Ionide, abyste získali skvělé prostředí integrovaného vývojového prostředí (IDE) pro různé platformy s IntelliSense a refaktoringy kódu. Další informace o modulu plug-in najdete v Ionide.io .

Nejprve se ujistěte, že máte správně nainstalovaný F# a 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ík řešení jazyka F# na levé straně okna. To znamená, že Ionide úspěšně načetl projekt, který jste právě vytvořili. V editoru můžete napsat kód před tímto bodem v čase, ale jakmile k tomu dojde, všechno se dokončilo načítání.

Napsání prvního skriptu

Jakmile nakonfigurujete Visual Studio Code tak, aby používal skriptování .NET Core, přejděte do zobrazení Průzkumníka v editoru Visual Studio Code 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 Enter. V dolní části obrazovky se zobrazí okno terminálu, které by mělo vypadat nějak takto:

Example of F# Interactive output with Ionide

Udělali jsme tři věci:

  1. Spustil proces FSI.
  2. Odeslal kód, který jste zvýraznili, do procesu FSI.
  3. Proces FSI vyhodnotil kód, který jste odeslali.

Protože to, co jste odeslali, byla funkce, můžete teď tuto funkci volat pomocí FSI! V interaktivním okně zadejte následující:

toPigLatin "banana";;

Měl by se vám 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í údaje:

toPigLatin "apple";;

Měl by se vám 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 ve službě FSI jsou ukončeny ;;. Důvodem je to, že FSI umožňuje zadat více řádků. Na ;; konci získáte informace o službě FSI po 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, je funkce, toPigLatin která přebírá slovo jako vstup a převádí ho na reprezentaci tohoto slova pig-latin. 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í položky ve službě FSI:

val toPigLatin: word: string -> string

To uvádí, že je funkce, která přebírá string jako vstup (volánaword) a vrací další string.toPigLatin 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#. Všimněte si také, že pokud na funkci v editoru Visual Studio Code najedete myší.

V těle funkce si všimnete dvou různých částí:

  1. Vnitřní funkce, která označuje isVowel, zda daný znak (c) je samohláska kontrolou, zda 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
    
  2. Výraz if..then..else , který kontroluje, jestli je první znak samohláskou, a vytvoří návratovou hodnotu ze vstupních znaků na základě toho, jestli byl první znak samohláskou nebo ne:

    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"
    

Tok toPigLatin je tedy:

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, kterou byste si o tom mohli všimnout: v jazyce F# neexistuje žádná explicitní instrukce, která by se z funkce vrátila. 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. Protože if..then..else je samotný výraz, vyhodnocení těla then bloku nebo těla else bloku určuje hodnotu vrácenou toPigLatin funkcí.

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. Označuje se jako vývoj řízený REPL, kde REPL představuje smyčku Read-Evaluate-Print. 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 novou module volanou PigLatin funkci a zkopírujte do toPigLatin ní funkci, kterou jste vytvořili dříve:

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 main funkcí 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 main funkci 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:

  1. 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.
  2. 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.
  3. Pokud máte v adresářích projektu neplatné znaky, ionide nemusí fungovat. Pokud se jedná o tento případ, přejmenujte adresáře projektu.
  4. Pokud žádný z příkazů Ionide nefunguje, zkontrolujte klíčové vazby editoru Visual Studio Code a podívejte se, jestli je omylem přepisujete.
  5. Pokud je ionide na vašem počítači přerušený a žádný z výše uvedených možností problém nevyřeší, zkuste odebrat ionide-fsharp adresář na svém počítači a přeinstalovat sadu modulů plug-in.
  6. Pokud se projektu nepodařilo načíst (zobrazí se Průzkumník řešení jazyka F#), klikněte pravým tlačítkem myši na tento projekt a kliknutím na Zobrazit podrobnosti zobrazíte další diagnostické informace.

Ionide je opensourcový projekt vytvořený a spravovaný členy komunity F#. Ohlaste problémy a neváhejte přispívat v úložišti GitHubu ionide-vscode-fsharp.

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 tématu Prohlídka jazyka F#.