Mi az az F# Interactive?
Néha nem szeretne végighaladni az alkalmazások létrehozásának, csomagolásának és terjesztésének folyamatán. Az F# Interactive egy interaktív programozási és szkriptelési környezet. Egyszerűvé teszi az ötlettől a kódig való váltást azáltal, hogy lehetővé teszi a kód valós idejű írását és kiértékelését a konzolon vagy önálló szkriptfájlokon keresztül.
Az F# Interactive indítása
Az F# Interactive a .NET SDK-ba van beépítve. A .NET CLI dotnet fsi paranccsal indíthatja el.
dotnet fsi
Read-Evaluate-Print-Loop (REPL)
Az F# Interactive indítása egy olvasási-kiértékelő-nyomtatási ciklus (REPL) munkamenetbe indítja, ahol megírhatja az F#-kódot, és azonnal kiértékelheti annak kimenetét a konzolon.
Microsoft (R) F# Interactive version 13.9.201.0 for F# 9.0
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
>
Kifejezések futtatása és kiértékelése
A bemenet kiértékeléséhez a karakter után kell megadnia > .
> #help;;
Ha például futtatja a #help parancsot, a kimenet az F# interaktív súgómenüt jeleníti meg.
F# Interactive directives:
#r "file.dll";; // Reference (dynamically load) the given DLL
#i "package source uri";; // Include package source uri when searching for packages
#I "path";; // Add the given search path for referenced DLLs
#load "file.fs" ...;; // Load the given file(s) as if compiled and referenced
#time ["on"|"off"];; // Toggle timing on/off
#help;; // Display help
#help "idn";; // Display documentation for an identifier, e.g. #help "List.map";;
#r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2'
#r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version
#clear;; // Clear screen
#quit;; // Exit
F# Interactive command line options:
See 'dotnet fsi --help' for options
A ;; karakterek elhatárolják egy kifejezés végét. A rendszer nem értékel ki kódot, amíg be nem írja a karaktereket ;; . Ez a struktúra többsoros kifejezések írásakor hasznos, mivel a kód nincs új vonalkarakterekben elválasztva.
Az F#-kód kiértékelése ugyanúgy működik. Az alábbi kód egy üzenetet nyomtat ki a konzolra.
> printfn "Hello World!";;
A kiértékelt kimenet a következő:
Hello World!
val it: unit = ()
Az első sor a kiértékelt kód kimenetét jeleníti meg, a második sor pedig a kimenet típusadatait. Ebben az esetben a konzol értékének (val) kimenete típus unit, amelyet a () jogkivonat jelöl, és a it névhez van kötve. Ha további műveleteket szeretne végrehajtani, később hozzáférhet it az értékhez a programban.
Kilépés a REPL-ből
Az F# Interaktív REPL használata után a #q#quit parancsokkal lépjen ki.
> #q;;
F#-szkriptfájlok
Ha további kódot ír, a kódot egy szkriptbe mentheti az fsx fájlkiterjesztéssel.
Ha ugyanezt a példát használja egy üzenet konzolra való nyomtatására, létrehozhat egy my-script.fsx nevű fájlt a kód beírásához.
printfn "Hello World!"
Azt azonban érdemes megjegyezni, hogy az fsx-fájlokban nem kell a kifejezések végén használnia;;. Nincs rá szüksége, mert a szkriptfájlokban az F# Interactive szabványos F#-kódformázási irányelveket, például behúzást és új sorokat használhat.
A forráskód összeállítása, majd a lefordított szerelvény későbbi futtatása helyett egyszerűen futtathatja dotnet fsi és megadhatja az F#-kódot tartalmazó szkriptfájl nevét, az F# interactive pedig felolvassa és valós időben végrehajtja a kódot.
dotnet fsi my-script.fsx
A szkript futtatása a következő kimenetet hozza létre.
Hello World!