Visual Studio Code’da F# Kullanmaya Başlama

ıntellisense ve Code yeniden düzenlemeler ile harika platformlar arası, hafif tümleşik geliştirme ortamı (ıde) deneyimi almak için ıonıde eklentisine Visual Studio Code F # yazabilirsiniz. Eklenti hakkında daha fazla bilgi edinmek için Ionide.io ziyaret edin.

Başlamak için, F # ve ıonıde eklentisinin doğru bir şekilde yüklendiğindenemin olun.

Ionıde ile ilk projenizi oluşturma

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

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

Tamamlandıktan sonra, dizini projeye değiştirin ve Visual Studio Code açın:

cd FirstIonideProject
code .

proje Visual Studio Code yüklendikten sonra, pencerenin sol tarafındaki F # Çözüm Gezgini bölmesini görmeniz gerekir. Bu, ıonıde 'nin yeni oluşturduğunuz projeyi başarıyla yüklediği anlamına gelir. Bu noktadan önce düzenleyicide kod yazabilirsiniz, ancak bu durum gerçekleştiğinde her şeyin yüklenmesi tamamlanmıştır.

İlk komut dosyanızı yazma

.net Core komut dosyası kullanmak üzere Visual Studio Code yapılandırdıktan sonra, Visual Studio Code gezgin görünümüne gidin ve yeni bir dosya oluşturun. Myfirstscript. FSX olarak adlandırın.

Şimdi aşağıdaki kodu buna 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 kelimeyi bir Pig Latinbiçimine dönüştürür. Sonraki adım F# Etkileşimli (FSI) kullanarak değerlendirmek için kullanılır.

İş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 açılır ve şuna benzer görünmelidir:

Ionıde ile F# Etkileşimli çıkışı örneği

Bu üç şey oldu:

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

Üzerinden gönderildikleriniz bir işleviydi, artık bu işlevi FSI ile çağırabilirsiniz! Etkileşimli pencerede şunları 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 beklenen şekilde çalışıyor gibi görünüyor. tebrikler, ilk F # işlevinizi Visual Studio Code yazdı ve FSI ile değerlendirdiniz!

Not

Fark etmeyebilirsiniz, FSI içindeki satırlar ile sonlandırılır ;; . Bunun nedeni, FSI 'in birden çok satır girmenize olanak sağlar. ;;Son olarak, kod TAMAMLANDıĞıNDA FSI 'in bu kodu bilmesini sağlar.

Kodu açıklayan

Kodun gerçekten yapmakta olduğu konusunda emin değilseniz, bir adım adım aşağıda verilmiştir.

Görebileceğiniz gibi, bir toPigLatin sözcüğü giriş olarak alan ve bu sözcüğün Pig-Latin gösterimine dönüştüren bir işlevdir. Bunun kuralları aşağıdaki gibidir:

Bir sözcükteki ilk karakter sesli harf ile başlıyorsa, sözcüğün sonuna "oley" ekleyin. Bir sesli harf ile başlamazsa, ilk karakteri sözcüğün sonuna taşıyın ve buna "ay" ekleyin.

FSI içinde aşağıdakileri fark etmiş olabilirsiniz:

val toPigLatin: word: string -> string

Bu durum, toPigLatin bir string as girişi (olarak adlandırılır word ) ve diğeri döndüren bir işlev olduğunu belirtir string . Bu, F # kodunu anlamak için önemli bir F # parçası olan işlevin tür imzasıolarak bilinir. Ayrıca, Visual Studio Code işlevin üzerine geldiğinizde bunu da fark edeceksiniz.

İşlevin gövdesinde, iki ayrı bölüm fark edeceksiniz:

  1. isVowelVerilen bir karakterin ( c ), desen eşleştirmearacılığıyla sağlanan desenlerden biriyle eşleşip eşleşmediğini kontrol ederek bir sesli işlevi olarak adlandırılan bir 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 bir sesli harf olup olmadığını denetleyen ve ilk karakterin bir sesli harf mi olduğunu ve giriş karakterlerinden bir dönüş değeri mi olduğunu kontrol eden bir ifade.

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

Flow bu toPigLatin nedenle:

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

Bunun hakkında dikkat edilecek bir son şey vardır: F # içinde, işlevden döndürülecek açık bir yönerge yoktur. Bunun nedeni, F # ' ın ifade tabanlı olması ve bir işlevin gövdesinde değerlendirilen son ifadenin bu işlevin dönüş değerini belirleyecektir. if..then..elseKendisinin bir ifadesi olduğu için, then blok gövdesinin veya bloğun gövdesi, else işlev tarafından döndürülen değeri belirler toPigLatin .

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

Bu makalenin önceki bölümlerinde, F # kodu yazma: ilk işlev yazma ve FSI ile etkileşimli olarak yürütme konularında ortak bir ilk adım gösterilmiştir. Bu, REPL 'un "Read-değerlendir-PRINT loop" IÇIN aldığı REPL temelli geliştirme olarak bilinir. Çalışır hale gelene kadar işlevselliği denemek için harika bir yoldur.

REPL temelli geliştirmede bir sonraki adım, çalışma kodunu bir F # uygulama dosyasına taşımadır. Daha sonra, F # derleyicisi tarafından yürütülenebilecek bir derlemeye derlenebilir.

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

Ardından, yeni bir module adı oluşturun PigLatin ve toPigLatin daha önce oluşturduğunuz işlevi bu ş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ün, main işlevin üzerinde ve bildirimin altında olması gerekir open System . , F # içinde bildirimlerin sırası önemlidir; bu nedenle, bir dosyaya çağrı yapmadan önce işlevi tanımlamanız gerekir.

Şimdi, main Işlevinde Pig Latin Oluşturucu işlevinizi bağımsız değişkenlerde ç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

Şimdi, konsol uygulamanızı komut satırından çalıştırabilirsiniz:

dotnet run apple banana

Ayrıca, bu kez çalışan bir program olarak, betik dosyanız ile aynı sonucu verir.

Ionıde sorunlarını giderme

İşte karşılaşabileceğiniz bazı sorunları giderebilmeniz için birkaç yol aşağıda verilmiştir:

  1. ıonıde 'nin kod düzenlemesi ö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şiklik yaptıysanız veya Visual Studio Code açık olarak ıonıde önkoşulları yüklediyseniz Visual Studio Code yeniden başlatın.
  3. Proje dizinlerinizde geçersiz karakterler varsa, ıonıde çalışmayabilir. Bu durumda proje dizinlerinizi yeniden adlandırın.
  4. ıonıde komutlarının hiçbiri çalışmıyorsa, yanlışlıkla geçersiz kıldığınızı görmek için Visual Studio Code anahtar bağlamalarınızı denetleyin.
  5. Ionıde makinenizde bozulur ve yukarıdakilerden hiçbiri sorununuzu düzeltmediyse, ionide-fsharp makinenizde dizini kaldırmayı ve eklenti paketini yeniden yüklemeyi deneyin.
  6. Bir proje yüklemesi başarısız olursa (F # Çözüm Gezgini bunu gösterir), bu projeye sağ tıklayıp Ayrıntıları gör ' e tıklayarak daha fazla tanılama bilgisi alın.

Ionıde, F # topluluğunun üyeleri tarafından oluşturulan ve tutulan açık kaynaklı bir projem. sorunları bildirin ve ıonıde-vscode-fsharp GitHub deposunakatkıda bulunun.

Ionıde geliştiricilerinden ve F # topluluğundan ıonıde Gitter kanalındadaha fazla yardım isteyebilirsiniz.

Sonraki adımlar

F # ve dilin özellikleri hakkında daha fazla bilgi edinmek için f # turunagöz atın.