Visual Studio Code'da F# kullanmaya başlama

F# dilinde kod yazmak için Visual Studio Code ve Ionide eklentisini kullanarak; IntelliSense ve kod yeniden düzenleme özellikleri sunan, harika bir platformlar arası ve hafif bir IDE deneyimi elde edebilirsiniz. Eklenti hakkında daha fazla bilgi edinmek için Ionide.io ziyaret edin.

Not

Başlamadan önce hem F# hem de Ionide eklentisiniyüklediğinizden 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 senaryonuzu yazın

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. MyFirstScript.fsxolarak adlandır.

Ş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 Latinbiç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 Entertuşuna basın. Ekranın alt kısmında bir terminal penceresi olduğunu göreceksiniz ve şuna benzer görünmelidir:

Ionide ile F# Etkileşimli çıktı örneği

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şleviolduğ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 ;;, kodun ne zaman bittiğini FSI'ye bildirir.

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, toPigLatin bir string giriş olarak alan (wordolarak adlandırılır) ve başka bir stringdöndüren bir işlev olduğunu belirtir. Bu, F# kodunu anlamada önemli olan temel bir F# parçası olanişlevinin tür imzası olarak bilinir. Visual Studio Code'da fonksiyonun üzerine geldiğinizde bunu da göreceksiniz.

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

  1. belirli bir karakterin (c) Desen Eşleştirmearacılığıyla sağlanan desenlerden biriyle eşleşip eşleşmediğini denetleyerek bir sesli harf olup olmadığını belirleyen isVoweladlı iç işlev:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. İ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 bir if..then..else ifadesi:

    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, ilk karakteri sözcüğün sonuna taşıyın ve ardından "ay" ekleyin.

Bu konuda dikkate alınacak son bir şey vardır: F# dilinde işlevden dönüş için açık bir talimat yoktur. Bunun nedeni F# ifadesinin tabanlı olması ve işlevin gövdesinde değerlendirilen son ifadenin bu işlevin dönüş değerini belirlemesidir. if..then..else kendisi bir ifade olduğundan, then bloğunun gövdesinin veya else bloğunun gövdesinin değerlendirilmesi, toPigLatin işlevi tarafından 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 tabanlı geliştirme olarak bilinir, burada REPL "Okuma-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, PigLatin adlı yeni bir module oluşturun ve daha önce oluşturduğunuz toPigLatin işlevini şu şekilde kopyalayın:

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 main işlevinin üzerinde ve open System bildiriminin 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 main işlevinde, 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. Ionide komutlarından hiçbiri çalışmıyorsa, Visual Studio Code tuş atamalarınızı kontrol ederek bunları yanlışlıkla geçersiz kılmadığınızdan emin olun.
  5. Ionide makinenizde bozuksa ve yukarıdakilerden hiçbiri sorununuzu çözmediyse makinenizdeki ionide-fsharp dizinini kaldırmayı deneyin ve eklenti paketini yeniden yükleyin.
  6. Bir proje yüklenemediyse (F# Çözüm Gezgini bunu gösterecektir), söz konusu 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 deposunakatkıda bulunun.

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.