Visual Studio Code’da F# Kullanmaya Başlama

IntelliSense ve kod yeniden düzenlemeleriyle harika bir platformlar arası, basit Tümleşik Geliştirme Ortamı (IDE) deneyimi elde etmek için Visual Studio Code'da Ionide eklentisiyleF# yazabilirsiniz. Eklenti hakkında daha fazla bilgi edinmek için Ionide.io adresini ziyaret edin.

Başlamak için F# ve Ionide eklentisinin doğru yüklendiğinden emin olun.

Ionide ile ilk projenizi oluşturma

Yeni bir F# projesi oluşturmak için bir komut satırı açın ve .NET CLI ile yeni bir proje oluşturun:

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

İşlem tamamlandıktan sonra dizini projeye değiştirin ve Visual Studio Code'ı açın:

cd FirstIonideProject
code .

Proje Visual Studio Code'da yüklendikten sonra pencerenizin sol tarafında F# Çözüm Gezgini bölmesinin açık olduğunu görmeniz gerekir. Bu, Ionide'ın az önce oluşturduğunuz projeyi başarıyla yüklediği anlamına gelir. Bu noktadan önce düzenleyicide kod yazabilirsiniz, ancak bu gerçekleştiğinde her şeyin yüklenmesi tamamlanmıştır.

İlk betiğinizi yazma

Visual Studio Code'u .NET Core betiği kullanacak şekilde yapılandırdıktan sonra, Visual Studio Code'da Gezgin görünümüne gidin ve yeni bir dosya oluşturun. Buna MyFirstScript.fsx adını verin.

Şimdi aşağıdaki kodu ekleyin:

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"

Bu işlev bir sözcüğü Pig Latin biçimine dönüştürür. Sonraki adım, F# Etkileşimli (FSI) kullanarak değerlendirmektir.

İşlevin tamamını vurgulayın (11 satır uzunluğunda olmalıdır). Vurgulandıktan sonra Alt tuşunu basılı tutun ve Enter tuşuna basın. Ekranın alt kısmında bir terminal penceresi olduğunu göreceksiniz ve şuna benzer görünmelidir:

Example of F# Interactive output with Ionide

Bu işlem üç şey yaptı:

  1. FSI işlemini başlattı.
  2. Üzerinde vurguladığınız kodu FSI işlemine gönderdi.
  3. FSI işlemi, gönderdiğiniz kodu değerlendirdi.

Gönderdiğiniz şey bir işlev olduğundan, artık bu işlevi FSI ile çağırabilirsiniz! Etkileşimli pencerede aşağıdakileri yazın:

toPigLatin "banana";;

Aşağıdaki sonucu görmeniz gerekir:

val it: string = "ananabay"

Şimdi ilk harf olarak bir sesli harf deneyelim. Aşağıdakileri girin:

toPigLatin "apple";;

Aşağıdaki sonucu görmeniz gerekir:

val it: string = "appleyay"

İşlev beklendiği gibi çalışıyor gibi görünüyor. Tebrikler, Visual Studio Code'da ilk F# işlevinizi yazdınız ve FSI ile değerlendirdiniz!

Not

Fark etmiş olabileceğiniz gibi, FSI'daki satırlar ile ;;sonlandırılır. Bunun nedeni FSI'nin birden çok satır girmenize izin vermesidir. sonundaki ;; , FSI'nin kodun ne zaman bittiğini bilmesini sağlar.

Kodu açıklama

Kodun gerçekte ne yaptığı hakkında emin değilseniz, işte adım adım.

Gördüğünüz gibi, toPigLatin bir sözcüğü girişi olarak alan ve bu sözcüğün Pig-Latin gösterimine dönüştüren bir işlevdir. Bunun kuralları şunlardır:

Bir sözcükteki ilk karakter sesli harfle başlıyorsa, sözcüğün sonuna "yay" ekleyin. Sesli harfle başlamıyorsa, bu ilk karakteri sözcüğün sonuna taşıyın ve "ay" ekleyin.

FSI'da aşağıdakileri fark etmiş olabilirsiniz:

val toPigLatin: word: string -> string

Bu, girişi olarak alan (adlıword) ve başka stringbir döndüren bir string işlev olduğunu belirtirtoPigLatin. Bu, işlevin tür imzası olarak bilinir ve F# kodunu anlamanın anahtarı olan temel bir F# parçasıdır. Visual Studio Code'da işlevin üzerine geldiğinizde de bunu fark edeceksiniz.

İşlevin gövdesinde iki farklı bölüm göreceksiniz:

  1. Verilen karakterin (c) desen eşleştirme yoluyla sağlanan desenlerden biriyle eşleşip eşleşmediğini denetleyerek sesli harf olup olmadığını belirleyen adlı isVowelbir iç işlev:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. if..then..else İlk karakterin sesli harf olup olmadığını denetleyen ve ilk karakterin sesli harf olup olmadığını temel alarak giriş karakterlerinden bir dönüş değeri oluşturan ifade:

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

toPigLatin Akışı şu şekildedir:

Giriş sözcüğünün ilk karakterinin sesli harf olup olmadığını denetleyin. Varsa, sözcüğün sonuna "yay" ekleyin. Aksi takdirde, bu ilk karakteri sözcüğün sonuna taşıyın ve "ay" ekleyin.

Bu konuda dikkate alınacak son bir şey vardır: F# dilinde işlevden döndürülecek açık bir yönerge yoktur. Bunun nedeni F# ifadesinin tabanlı olması ve işlevin gövdesinde değerlendirilen son ifadenin bu işlevin dönüş değerini belirlemesidir. Kendisi if..then..else bir ifade olduğundan, bloğun gövdesinin then veya bloğun gövdesinin else değerlendirilmesi işlev tarafından toPigLatin döndürülen değeri belirler.

Konsol uygulamasını Pig Latin oluşturucuya dönüştürme

Bu makaledeki önceki bölümlerde, F# kodu yazmanın yaygın bir ilk adımı gösterilmiştir: bir ilk işlev yazma ve FSI ile etkileşimli olarak yürütme. Bu, REPL temelli geliştirme olarak bilinir ve BURADA REPL "Read-Evaluate-Print Döngüsü" anlamına gelir. Çalışan bir şey bulana kadar işlevsellikle denemeler yapmak için harika bir yoldur.

REPL temelli geliştirmenin bir sonraki adımı, çalışma kodunu bir F# uygulama dosyasına taşımaktır. Daha sonra F# derleyicisi tarafından yürütülebilen bir derlemede derlenebilir.

Başlamak için daha önce .NET CLI ile oluşturduğunuz Program.fs dosyasını açın. Bazı kodların zaten orada olduğunu fark edeceksiniz.

Ardından adlı PigLatin yeni module bir ad oluşturun ve daha önce oluşturduğunuz işlevi bu işleve şu şekilde kopyalayıntoPigLatin:

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"

Bu modül işlevin main üzerinde ve bildirimin open System altında olmalıdır. Bildirimlerin sırası F# dilinde önemlidir, bu nedenle işlevi bir dosyada çağırmadan önce tanımlamanız gerekir.

Şimdi işlevinde main , bağımsız değişkenler üzerinde Pig Latin oluşturucu işlevinizi çağırın:

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

    0

Artık konsol uygulamanızı komut satırından çalıştırabilirsiniz:

dotnet run apple banana

Betik dosyanızla aynı sonucun geldiğini göreceksiniz, ancak bu kez çalışan bir program olarak!

İyonit Sorunlarını Giderme

Karşılaşabileceğiniz bazı sorunları gidermenin birkaç yolu şunlardır:

  1. Ionide'ın kod düzenleme özelliklerini almak için F# dosyalarınızın diske ve Visual Studio Code çalışma alanında açık olan bir klasörün içine kaydedilmesi gerekir.
  2. Sisteminizde değişiklikler yaptıysanız veya Visual Studio Code açıkken Ionide önkoşullarını yüklediyseniz Visual Studio Code'u yeniden başlatın.
  3. Proje dizinlerinizde geçersiz karakterler varsa Ionide çalışmayabilir. Böyle bir durumda proje dizinlerinizi yeniden adlandırın.
  4. İyonide komutlarından hiçbiri çalışmıyorsa Visual Studio Code Anahtar Bağlamalarınızı denetleyerek bunları yanlışlıkla geçersiz kılıp kılmadığınızı denetleyin.
  5. Ionide makinenizde bozuksa ve yukarıdakilerden hiçbiri sorununuzu çözmediyse, makinenizdeki dizini kaldırmayı ionide-fsharp ve eklenti paketini yeniden yüklemeyi deneyin.
  6. Bir proje yüklenemediyse (F# Çözüm Gezgini bunu gösterecektir), bu projeye sağ tıklayın ve daha fazla tanılama bilgisi almak için Ayrıntılara bakın'a tıklayın.

İyonide, F# topluluğunun üyeleri tarafından oluşturulmuş ve sürdürülen açık kaynaklı bir projedir. Sorunları bildirin ve ionide-vscode-fsharp GitHub deposunda katkıda bulunmaktan çekinmeyin.

Ayrıca Ionide gitter kanalındaki Ionide geliştiricilerinden ve F# topluluğundan daha fazla yardım isteyebilirsiniz.

Sonraki adımlar

F# ve dilin özellikleri hakkında daha fazla bilgi edinmek için Bkz . F# Turu.