İzlenecek Yol: İlk F# Programınız

Visual Studio 2010 yeni bir programlama dili içerir, F#.F#, geleneksel nesne yönelimli programlamaya ve .NET kavramlarına ek olarak fonksiyonel programlamayı destekleyen bir çoklu paradigma dilidir.Aşağıdaki örnekler F#'ın bazı özelliklerini ve sözdizimini tanıtır.Örnekler basit değişkenlerin nasıl tanımlacağını, işlevlerin nasıl yazılıp test edileceğini, dizilerin ve listelerin nasıl oluşturulacağını ve bir sınıfın nasıl tanımlanıp kullanılacağını gösterir.

[!NOT]

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için, bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.

Yeni bir konsol uygulaması oluşturmak için

  1. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklatın.

  2. Visual F#'ı Şablon Kategorileri bölmesinde göremiyorsanız, Diğer Diller'e tıklayın ve sonra Visual F#'a tıklayın.Merkezdeki Şablonlar bölmesi F# şablonlarını listeler.

  3. .NET Framework 4'ın Hedef Framework kutusunda göründüğünden emin olmak için Şablonlar bölmesinin en üstüne bakın.

  4. Şablonlar listesinde F# Uygulaması'na tıklayın.

  5. İsim alanına projeniz için bir ad yazın.

  6. Tamam düğmesini tıklatın.

    Çözüm Gezgini'nde yeni proje görüntülenir.

Tanımlayıcıları bildirmek ve kullanmak üzere let anahtar sözcüğünü kullanmak için

  • Aşağıdaki kodu kopyalayıp Program.fs'e yapıştırın.Her tanımlayıcıyı, anInt, aString ve anIntSquared'i bir değere bağlarsınız.

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

    [!NOT]

    Kodu Klasik görünümde göremiyorsanız, konu başlığı altındaki üstbilgi içindeki Language Filter F# içerek şekilde ayarlandığından emin olun.

F# Etkileşimli penceresinde sonuçları görmek için

  1. Önceki yordamda let ifadesini seçin.

  2. Seçili alana sağ tıklayın ve sonra Etkileşimli'ye Gönder'e tıklayın.Alternatif olarak, ALT+ENTER tuşlarına basın.

  3. F# Etkileşimli penceresi açılır ve aşağıdaki satırlarda gösterildiği gibi let ifadelerinin yorum sonuçları görüntülenir.Türler belirtilen değerlerden çıkartılır.

    val anInt : int = 5

    val aString : string = "Hello"

    val anIntSquared : int = 25

Sonuçları Komut İstem penceresinde görmek için

  1. Aşağıdaki satırları Program.fs'e ekleyin.

    System.Console.WriteLine(anInt)
    System.Console.WriteLine(aString)
    System.Console.WriteLine(anIntSquared)
    
  2. Kodu çalıştırmak için CTRL+F5 tuşlarına basın.Aşağıdaki değerleri içeren bir komut istem penceresi görünür.

    5

    Hello

    25

    Önceki WriteLine ifadelerindeki anInt, aString ve anIntSquared tanımlayıcıları üzerinde fare işaretçisini bekleterek tür çıkarımlarını doğrulayabilirsiniz.

Bir işlevi tanımlamak ve çalıştırmak için

  1. Aşağıdaki kodda gösterildiği gibi let ifadesini kare alma işlevini tanımlamak için kullanın.İşlevin bir parametresi var, n ve n'e gönderilen bağımsız değişkenin karesini döner.

    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. Kodu çalıştırmak için CTRL+F5 tuşlarına basın.Görüntülenen sonuç 25'tir.

  3. Özyinelemeli bir işlev let rec ifadesini gerektirir.Aşağıdaki örnek, n parametresinin faktoriyelini hesaplayan işlevi tanımlar.

    let rec factorial n = 
        if n = 0 
        then 1 
        else n * factorial (n - 1)
    System.Console.WriteLine(factorial anInt)
    
  4. İşlevi çalıştırmak için CTRL+F5 tuşlarına basın.Görüntülenen sonuç 120'dir, 5'in faktoriyeli.

Koleksiyonlar oluşturmak: listeler ve kayıt dizeleri

  1. Değerleri toplamanın bir yolu, aşağıdaki kodda gösterildiği gibi bir dizin kullanmaktır.

    let turnChoices = ("right", "left")
    System.Console.WriteLine(turnChoices)
    // Output: (right, left) 
    
    let intAndSquare = (anInt, square anInt)
    System.Console.WriteLine(intAndSquare)
    // Output: (5,25)
    
  2. Değerleri toplamanın diğer bir yolu, aşağıdaki kodda gösterildiği gibi liste kullanmaktır.

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

    "cons" işleci (::) kullanarak listeye yeni bir en iyi arkadaş ekleyin. İşlemin bffs değerini değiştirmediğine dikkat edin.bffs değeri değişmezdir ve değiştirilemez.

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

    Listeleri görüntülemek için printfn kullanın.printfn işlevi yapılandırılmış değerlerde bulunan bireysel öğeleri gösterir.

    printfn "%A" bffs
    // Output: ["Susan"; "Kerry"; "Linda"; "Maria"]
    printfn "%A" newBffs
    // Output: ["Katie"; "Susan"; "Kerry"; "Linda"; "Maria"]
    
  3. Sonuçları ya CTRL+F5 tuşuna basarak yada kodun bir bölümünü seçip ve sonra ALT+ENTER tuşuna basarak görüntüleyebilirsiniz.

Bir sınıf oluşturmak ve kullanmak için

  1. Aşağıdaki kod, iki özelliği Name ve Age olan Person sınıfını oluşturur.Name salt okunur özelliğidir.Değeri çoğu fonksiyonel programlamada olduğu gibi değişmezdir.İhtiyacınız varsa F#'ta değişmez değerler oluşturabilirsiniz fakat onları açıkça değişmez olarak tanımlamalısınız.Aşağıdaki sınıf tanımında, Age'in değeri değişmez internalAge yerel değişkeninde saklanır.internalAge değeri değiştirilebilir.

    // 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. Sınıfı test etmek için iki Person nesnesi bildirin, bazı değişiklikler yapın ve aşağıdaki kodda gösterildiği gibi sonuçları görüntüleyin.

    // 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))
    

    Aşağıdaki satırlar gösterilir:

    Name: John

    Age: 44

    Name: Mary

    Age: 15

    False

F# öğreticilerindeki diğer örnekleri görüntülemek için

  1. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklatın.

  2. Visual F#'ı Şablon Kategorileri bölmesinde göremiyorsanız, Diğer Diller'e tıklayın ve sonra Visual F#'a tıklayın.Merkezdeki Şablonlar bölmesi F# şablonlarını listeler.

  3. .NET Framework 4'ın Hedef Framework kutusunda göründüğünden emin olmak için Şablonlar bölmesinin en üstüne bakın.

  4. Şablonlar listesinde Tutorial'a (Öğreticiler) tıklayın.

  5. Tamam düğmesini tıklatın.

  6. Çözüm Gezgini'nde öğretici görünür.

Sonraki Adımlar

Fonksiyonel programlama hakkında daha fazla bilgi ve ek örnekler için, bkz. İlk Sınıf Değerleri Olarak İşlevler (F#).Dizin, liste, let ifadeleri, işlev tanımları, sınıflar, üyeler ve diğer birçok konu hakkında daha fazla bilgi için, bkz. F# Dili Başvurusu.

Ayrıca bkz.

Kavramlar

İlk Sınıf Değerleri Olarak İşlevler (F#)

Diğer Kaynaklar

Visual F#

F# Dili Başvurusu