İzlenecek Yol: İlk f # programınızı
Visual Studio 2010 yeni bir programlama dili içerir, F#. F# geleneksel nesne tabanlı programlama ve .NET konseptlerine ek olarak, fonksiyonel programlamayı da destekleyen multiparadigm bir dildir. 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. Bu öğeleri bilgisayarınızdaki Visual Studio sürümü ve kullandığınız ayarlar belirler. Daha fazla bilgi için bkz: Visual Studio Ayarlar.
Yeni bir konsol uygulaması oluşturmak için
File (Dosya) menüsünde, New'un (Yeni) üzerine gelin ve Project'i (Proje) tıklatın.
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.
.NET Framework 4'ın Hedef Framework kutusunda göründüğünden emin olmak için Şablonlar bölmesinin en üstüne bakın.
Şablonlar listesinde F# Uygulaması'na tıklayın.
İsim alanına projeniz için bir ad yazın.
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
Klasik Görünüm Kodu göremiyorsanız, emin olun Dil filtresi başlığın altında konu başlığını f # içerecek şekilde ayarlanır.
F# Etkileşimli penceresinde sonuçları görmek için
Önceki yordamda let ifadesini seçin.
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.
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ürü, belirtilen değerler olarak algılanır.
val anInt : int = 5
val aString : string = "Hello"
val anIntSquared : int = 25
Sonuçları Komut İstem penceresinde görmek için
Aşağıdaki satırları Program.fs'e ekleyin.
System.Console.WriteLine(anInt) System.Console.WriteLine(aString) System.Console.WriteLine(anIntSquared)
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
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)
Kodu çalıştırmak için CTRL+F5 tuşlarına basın. Görüntülenen sonuç 25'tir.
Ö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)
İşlevi çalıştırmak için CTRL+F5 tuşlarına basın. Görüntülenen sonuç 120'dir, 5'in faktoriyeli.
Koleksiyon oluşturmak için: listeler ve diziler
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)
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"]
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
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
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 sonuçlar görüntülenecektir.
Name: John
Age: 44
Name: Mary
Age: 15
False
F# öğreticilerindeki diğer örnekleri görüntülemek için
Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi tıklatın.
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.
.NET Framework 4'ın Hedef Framework kutusunda göründüğünden emin olmak için Şablonlar bölmesinin en üstüne bakın.
Şablonlar listesinde Tutorial'a (Öğreticiler) tıklayın.
Tamam düğmesini tıklatın.
Çö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 (F #) olarak İşlevler. 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 # dil Başvuru.
Ayrıca bkz.
Kavramlar
Visual F# 2010'daki Yenilikler
İlk Sınıf Değerleri (F #) olarak İşlevler