Az F# használatának első lépései a Visual Studio Code-ban

Az Ionide beépülő modullal az F#-ot a Visual Studio Code-ban is megírhatja, így nagyszerű platformfüggetlen, egyszerűsített integrált fejlesztési környezetet (IDE) érhet el az IntelliSense és a kód újrabontásával. Látogasson el Ionide.io , és tudjon meg többet a beépülő modulról.

Először győződjön meg arról, hogy megfelelően van telepítve az F# és az Ionide beépülő modul.

Az első projekt létrehozása az Ionide használatával

Új F#-projekt létrehozásához nyisson meg egy parancssort, és hozzon létre egy új projektet a .NET parancssori felülettel:

dotnet new console -lang "F#" -o FirstIonideProject

Miután elkészült, módosítsa a könyvtárat a projektre, és nyissa meg a Visual Studio Code-ot:

cd FirstIonideProject
code .

Miután a projekt betöltődött a Visual Studio Code-ban, az ablak bal oldalán meg kell jelennie az F# Megoldáskezelő panelnek. Ez azt jelenti, hogy az Ionide sikeresen betöltötte az imént létrehozott projektet. A szerkesztőben a jelen időpont előtt írhat kódot, de ha ez megtörténik, minden be van töltve.

Az első szkript írása

Miután konfigurálta a Visual Studio Code-ot a .NET Core-szkriptek használatára, lépjen a Visual Studio Code Explorer nézetére, és hozzon létre egy új fájlt. Nevezze el MyFirstScript.fsx néven.

Most adja hozzá a következő kódot:

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"

Ez a függvény átalakítja a szavakat a Pig Latin egyik formájává. A következő lépés a kiértékelése az F# Interactive (FSI) használatával.

Jelölje ki a teljes függvényt (11 sor hosszúnak kell lennie). Miután ki van emelve, tartsa lenyomva az Alt billentyűt, és nyomja le az Enter billentyűt. Megjelenik egy terminálablak a képernyő alján, és ennek a következőképpen kell kinéznie:

Example of F# Interactive output with Ionide

Ez három dolgot tett:

  1. Elindította az FSI-folyamatot.
  2. Elküldte a kiemelt kódot az FSI-folyamatnak.
  3. Az FSI-folyamat kiértékelte az elküldött kódot.

Mivel az elküldött függvény egy függvény volt, most már meghívhatja ezt a függvényt az FSI-vel! Az interaktív ablakban írja be a következőket:

toPigLatin "banana";;

A következő eredményt kell látnia:

val it: string = "ananabay"

Most próbáljuk ki a magánhangzót első betűként. Adja meg a következőket:

toPigLatin "apple";;

A következő eredményt kell látnia:

val it: string = "appleyay"

Úgy tűnik, hogy a függvény a várt módon működik. Gratulálunk, most írta meg az első F# függvényt a Visual Studio Code-ban, és kiértékelte az FSI-vel!

Feljegyzés

Mint bizonyára észrevette, az FSI vonalai a következővel ;;végződnek: . Ennek az az oka, hogy az FSI lehetővé teszi több sor megadását. A ;; végén tudatja az FSI-vel, hogy mikor fejeződött be a kód.

A kód ismertetése

Ha nem biztos abban, hogy a kód valójában mit csinál, íme egy lépésről lépésre.

Mint látható, egy függvény, toPigLatin amely egy szót vesz bemenetként, és átalakítja azt a szó pig-latin ábrázolására. Ennek szabályai a következők:

Ha egy szó első karaktere magánhangzóval kezdődik, adja hozzá a "yay" szót a szó végéhez. Ha nem magánhangzóval kezdődik, helyezze az első karaktert a szó végére, és adja hozzá az "ay" karaktert.

Előfordulhat, hogy az FSI-ben a következőket észlelte:

val toPigLatin: word: string -> string

Ez azt állítja, hogy toPigLatin ez egy függvény, amely bemenetként (úgynevezett word) vesz résztstring, és egy másikat stringad vissza. Ezt nevezik a függvény típus-aláírásának, az F# alapvető elemének, amely az F#-kód megértésének kulcsa. Ezt akkor is megfigyelheti, ha a Visual Studio Code-ban a függvény fölé viszi az egérmutatót.

A függvény törzsében két különböző rész jelenik meg:

  1. Egy belső függvény, az úgynevezettisVowel, amely meghatározza, hogy egy adott karakter (c) magánhangzó-e, és ellenőrzi, hogy egyezik-e a megadott minták egyikével a Mintaegyeztetés segítségével:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Olyan if..then..else kifejezés, amely ellenőrzi, hogy az első karakter magánhangzó-e, és a bemeneti karakterekből ad vissza értéket annak alapján, hogy az első karakter magánhangzó-e vagy sem:

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

A folyamat toPigLatin tehát a következő:

Ellenőrizze, hogy a bemeneti szó első karaktere magánhangzó-e. Ha igen, csatolja a "yay" szót a szó végéhez. Ellenkező esetben helyezze át az első karaktert a szó végére, és adja hozzá az "ay" karaktert.

Ezzel kapcsolatban még egy utolsó dolog látható: az F#-ban nincs explicit utasítás a függvényből való visszatérésre. Ennek az az oka, hogy az F# kifejezésalapú, és a függvény törzsében kiértékelt utolsó kifejezés határozza meg a függvény visszatérési értékét. Mivel if..then..else maga egy kifejezés, a blokk törzsének then vagy a blokk törzsének kiértékelése else határozza meg a függvény által visszaadott toPigLatin értéket.

A konzolalkalmazás átalakítása Pig Latin-generátorsá

A cikk előző szakaszai az F#-kód írásának gyakori első lépését mutatták be: egy kezdeti függvény írását és interaktív végrehajtását az FSI-vel. Ezt REPL-alapú fejlesztésnek nevezzük, ahol a REPL a "Read-Evaluate-Print Loop". Ez egy nagyszerű módja annak, hogy kísérletezzen a funkciókkal, amíg valami nem működik.

A REPL-alapú fejlesztés következő lépése a munkakód F#-implementációs fájlba való áthelyezése. Ezt követően az F#-fordító lefordíthatja egy végrehajtható szerelvénybe.

Először nyissa meg a korábban a .NET CLI-vel létrehozott Program.fs fájlt. Észre fogja venni, hogy néhány kód már benne van.

Ezután hozzon létre egy új module hívott nevet PigLatin , és másolja be a toPigLatin korábban létrehozott függvényt a következő módon:

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"

Ennek a modulnak a függvény fölött és a mainopen System deklaráció alatt kell lennie. A deklarációk sorrendje az F#-ban számít, ezért a függvényt meg kell határoznia, mielőtt meghívja egy fájlban.

Most a függvényben hívja meg a main Pig Latin generator függvényt az argumentumokon:

[<EntryPoint>]
let main args =
    for arg in args do
        let newArg = PigLatin.toPigLatin arg
        printfn "%s in Pig Latin is: %s" arg newArg

    0

Most már futtathatja a konzolalkalmazást a parancssorból:

dotnet run apple banana

És látni fogja, hogy ugyanazt az eredményt adja ki, mint a szkriptfájl, de ezúttal futó programként!

Az ionid hibaelhárítása

Az alábbiakban néhány módszert talál arra, hogy elhárítsa azokat a problémákat, amelyekbe esetleg belefuthat:

  1. Az Ionide kódszerkesztési funkcióinak lekéréséhez az F#-fájlokat lemezre és a Visual Studio Code-munkaterületen megnyitott mappába kell menteni.
  2. Ha módosította a rendszert, vagy telepítette az Ionide előfeltételeit a Visual Studio Code megnyitásával, indítsa újra a Visual Studio Code-ot.
  3. Ha a projektkönyvtárakban érvénytelen karakterek vannak, előfordulhat, hogy az Ionide nem működik. Ha ez a helyzet, nevezze át a projektkönyvtárakat.
  4. Ha az Ionide-parancsok egyike sem működik, ellenőrizze a Visual Studio Code kulcskötéseit , hogy véletlenül felülbírálja-e őket.
  5. Ha az Ionide meghibásodott a számítógépen, és a fentiek egyike sem javította a problémát, távolítsa el a könyvtárat a ionide-fsharp számítógépen, és telepítse újra a beépülő modulcsomagot.
  6. Ha egy projekt betöltése nem sikerült (az F# Megoldáskezelő ezt jeleníti meg), kattintson a jobb gombbal a projektre, és a Részletek megtekintése parancsra kattintva további diagnosztikai információkat kaphat.

Az Ionide egy nyílt forráskódú projekt, amelyet az F# közösség tagjai építettek és tartanak karban. Jelentse a problémákat, és nyugodtan járuljon hozzá az ionide-vscode-fsharp GitHub-adattárhoz.

Az Ionide Gitter csatornán további segítséget is kérhet az Ionide-fejlesztőktől és az F#-közösségtől.

Következő lépések

Ha többet szeretne megtudni az F# nyelvről és a nyelv funkcióiról, tekintse meg az F#-bemutatót.