Názorný postup: První F# programu

Ve vývojovém prostředí Visual Studio 2010 je obsažen nový programovací jazyk, F#.F# je multiparadigmatický jazyk, u kterého je k tradičnímu objektově orientovanému programování a konceptům technologie .NET přidáno funkcionální programování.Následující příklady představují některé jeho funkce a syntaxi.Příklady ukazují, jak deklarovat jednoduché proměnné, zapisovat a testovat funkce, jak vytvářet n-tice a seznamy a jak definovat a používat třídy.

[!POZNÁMKA]

Ve vašem počítači se pro některé z prvků uživatelského rozhraní sady Visual Studio mohou zobrazit jiné názvy a umístění, než jsou uvedeny v následujících pokynech. Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením. Další informace naleznete v tématu Nastavení aplikace Visual Studio.

Vytvořte novou konzolovou aplikaci

  1. V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).

  2. Pokud se v panelu Kategorie šablon jazyk Visual F# nenachází, klikněte na uzel Jiné jazyky a poté klikněte na Visual F#.Podokno Šablony uprostřed zobrazuje seznam šablon jazyka F#.

  3. Podívejte se na horní část podokna Šablony a ujistěte se, že je v poli Cílové rozhraní vybrána možnost .NET Framework 4.

  4. V seznamu šablon klikněte na možnost Aplikace F#.

  5. Do pole Název zadejte název projektu.

  6. Klikněte na tlačítko OK.

    V podokně Řešení - průzkumník se zobrazí nový projekt.

Použití klíčového slova let při deklaraci a používání identifikátorů

  • Následující kód zkopírujte a vložte do souboru Program.fs.Každý identifikátor, anInt, aString, a anIntSquared, je svázán s hodnotou.

    let anInt = 5
    let aString = "Hello"
    // Perform a simple calculation and bind anIntSquared to the result.
    let anIntSquared = anInt * anInt
    

    [!POZNÁMKA]

    Pokud nelze kód v klasickém zobrazení zobrazit, zkontrolujte, zda je Filtr jazyka v záhlaví pod názvem tématu nastaven pro zahrnutí jazyka F#.

Zobrazení výsledků v interaktivním okně jazyka F#

  1. V předchozí proceduře vyberte výrazy let.

  2. Na vybranou oblast klikněte pravým tlačítkem a poté klikněte na Odeslat do interaktivního okna.Případně stiskněte klávesy ALT+ENTER.

  3. Zobrazí se okno F# Interactive a jsou zobrazeny výsledky interpretace výrazů let, jak ukazují následující řádky.Typy jsou odvozeny ze zadaných hodnot.

    val anInt : int = 5

    val aString : string = "Hello"

    val anIntSquared : int = 25

Zobrazení výsledků v okně příkazového řádku

  1. Do souboru Program.fs přidejte následující řádky.

    System.Console.WriteLine(anInt)
    System.Console.WriteLine(aString)
    System.Console.WriteLine(anIntSquared)
    
  2. Pro spuštění kódu stiskněte klávesy CTRL+F5.Zobrazí se okno příkazového řádku obsahující následující hodnoty.

    5

    Hello

    25

    Ponecháním ukazatele myši na názvech identifikátorů anInt, aString a anIntSquared v předchozích příkazech WriteLine můžete ověřit odvozené typy.

Definování a spuštění funkce

  1. Pro definování funkce mocniny použijte výraz let, tak jak je znázorněno v následujícím kódu.Funkce má jeden parametr n a vrací umocněný argument předaný do n.

    let square n = n * n
    // Call the function to calculate the square of anInt, which has the value 5.
    let result = square anInt
    // Display the result.
    System.Console.WriteLine(result)
    
  2. Pro spuštění kódu stiskněte klávesy CTRL+F5.Zobrazený výsledek je 25.

  3. Rekurzivní funkce vyžaduje výraz let rec.Následující příklad definuje funkci, která vypočítá faktoriál parametru n.

    let rec factorial n = 
        if n = 0 
        then 1 
        else n * factorial (n - 1)
    System.Console.WriteLine(factorial anInt)
    
  4. Pro spuštění funkce stiskněte CTRL+F5.Zobrazený výsledek je 120, faktoriál čísla 5.

Tvorba kolekcí: seznamy a n-tice

  1. Jednou z možností, jak sloučit několik hodnot, je použití n-tice, tak, jak je to zobrazeno v následujícím kódu.

    let turnChoices = ("right", "left")
    System.Console.WriteLine(turnChoices)
    // Output: (right, left)
    
    let intAndSquare = (anInt, square anInt)
    System.Console.WriteLine(intAndSquare)
    // Output: (5,25)
    
  2. Dalším způsobem sloučení hodnot je použití seznamu, tak jak je znázorněno v následujícím kódu.

    // List of best friends.
    let bffs = [ "Susan"; "Kerry"; "Linda"; "Maria" ] 
    

    Pomocí operátoru "cons" (::) je do seznamu přidán nový nejlepší přítel.Všimněte si, že operace nezmění hodnotu bffs.Hodnota bffs je neměnná a nelze ji změnit.

    // Bind newBffs to a new list that has "Katie" as its first element.
    let newBffs = "Katie" :: bffs
    

    Pro zobrazení seznamů použijte funkci printfn.Funkce printfn zobrazí jednotlivé prvky, obsažené ve strukturovaných hodnotách.

    printfn "%A" bffs
    // Output: ["Susan"; "Kerry"; "Linda"; "Maria"]
    printfn "%A" newBffs
    // Output: ["Katie"; "Susan"; "Kerry"; "Linda"; "Maria"]
    
  3. Výsledky můžete zobrazit stisknutím kombinace kláves CTRL+F5 nebo výběrem části kódu a stisknutím kláves ALT+ENTER.

Vytvoření a použití třídy

  1. Následující kód vytvoří třídu Person, která má dvě vlastnosti, Name a Age.Vlastnost Name je určena jen pro čtení.Její hodnota je neměnná, jako u většiny hodnot ve funkcionálním programování.Pokud je třeba, je v jazyce F# možné vytvořit měnitelné hodnoty, ale musí být explicitně definovány jako měnitelné.V následující definici třídy je hodnota Age uložena v měnitelné místní proměnné internalAge.Hodnotu proměnné internalAge lze změnit.

    // The declaration creates a constructor that takes two values, name and age.
    type Person(name:string, age:int) =
        // A Person object's age can be changed. The mutable keyword in the
        // declaration makes that possible.
        let mutable internalAge = age
    
        // Declare a second constructor that takes only one argument, a name.
        // This constructor calls the constructor that requires two arguments,
        // sending 0 as the value for age.
        new(name:string) = Person(name, 0)
    
        // A read-only property.
        member this.Name = name
        // A read/write property.
        member this.Age
            with get() = internalAge
            and set(value) = internalAge <- value
    
        // Instance methods.
        // Increment the person's age.
        member this.HasABirthday () = internalAge <- internalAge + 1
    
        // Check current age against some threshold.
        member this.IsOfAge targetAge = internalAge >= targetAge
    
        // Display the person's name and age.
        override this.ToString () = 
            "Name:  " + name + "\n" + "Age:   " + (string)internalAge
    
    
  2. Pro testování třídy deklarujte dva objekty Person, proveďte změny a zobrazte výsledky, tak jak je znázorněno v následujícím kódu.

    // The following let expressions are not part of the Person class. Make sure
    // they begin at the left margin.
    let person1 = Person("John", 43)
    let person2 = Person("Mary")
    
    // Send a new value for Mary's mutable property, Age.
    person2.Age <- 15
    // Add a year to John's age.
    person1.HasABirthday()
    
    // Display results.
    System.Console.WriteLine(person1.ToString())
    System.Console.WriteLine(person2.ToString())
    // Is Mary old enough to vote?
    System.Console.WriteLine(person2.IsOfAge(18))
    

    Zobrazí se následující řádky.

    Name: John

    Age: 44

    Name: Mary

    Age: 15

    False

Zobrazení dalších příkladů kurzu jazyka F#

  1. V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).

  2. Pokud se v panelu Kategorie šablon jazyk Visual F# nenachází, klikněte na uzel Jiné jazyky a poté klikněte na Visual F#.Podokno Šablony uprostřed zobrazuje seznam šablon jazyka F#.

  3. Podívejte se na horní část podokna Šablony a ujistěte se, že je v poli Cílové rozhraní vybrána možnost .NET Framework 4.

  4. V seznamu šablon klikněte na Výukový kurz F#.

  5. Klikněte na tlačítko OK.

  6. Kurz se zobrazí v podokně Řešení - průzkumník.

Další kroky

Další informace o funkcionálním programování spolu s dalšími příklady naleznete v tématu Funkce jako prvotřídní hodnoty (F#).Další informace o n-ticích, seznamech, výrazech let, definicích funkcí, tříd, členů a mnoho dalších témat naleznete v tématu F# Language Reference.

Viz také

Koncepty

Funkce jako prvotřídní hodnoty (F#)

Další zdroje

Visual F#

F# Language Reference