2016-02-12 18 views
5

F # kendi dizi düzenleme kitaplıklarına sahip mi?F # kendi dizi düzenleme kitaplıklarına sahip mi?

F # yi öğrenmeye çalışırken, mevcut System.string yöntemlerini kullanarak kendimi buluyorum.

Bunu yapmalı mıyım?

Kodu:

open System 

type PhoneNumber = 
    { CountryCode:int 
     Number:string } 

// b. Create a function formatPhone that accepts a PhoneNumber record and formats it to look like something like this: "+44 1234 456789" 
let formatPhone phoneNumber = 

    let getLeadingCharacters (length:int) (text:string) = 
     text.Substring(0, length) 

    let getLastCharacters (length:int) (text:string) = 
     text.Substring(text.Length - length, length) 

    printf "+%i %s %s" phoneNumber.CountryCode 
         (phoneNumber.Number |> getLeadingCharacters 4) 
         (phoneNumber.Number |> getLastCharacters 6) 

formatPhone { CountryCode=44; Number="123456789" };; 

GÜNCELLEME

Güncelleme işlevi dan:

let formatPhone phoneNumber = 

    let getLeadingCharacters (length:int) (text:string) = 
     text.Substring(0, length) 

    let getLastCharacters (length:int) (text:string) = 
     text.Substring(text.Length - length, length) 

    printf "+%i %s %s" phoneNumber.CountryCode 
         (phoneNumber.Number |> getLeadingCharacters 4) 
         (phoneNumber.Number |> getLastCharacters 6) 

formatPhone { CountryCode=44; Number="123456789" };; 

için:

let formatPhone phoneNumber = 

    printf "+%i %s %s" phoneNumber.CountryCode 
         phoneNumber.Number.[0..3] 
         phoneNumber.Number.[4..8] 

formatPhone { CountryCode=44; Number="123456789" };; 
+2

bir StringHelper modülünü içerir. Beni tamamen normal olarak vurur. –

+0

"Yolsuzlukla Mücadele"? –

+1

* Yolsuzlukla mücadele katmanı * terimi [DDD] 'den kabul edildi (http://amzn.to/WBCwx7). –

cevap

8

Hayır, F # .NET kitaplığını çoğaltan belirli bir String library yok. Ekstra dize işlevleri olan bir string module var.

Evet, .NET işlevlerini kullanın.

F # 'nun tüm .NET kütüphanesinden faydalanabilmesi, en güçlü özelliklerinden biridir. İlk olarak, tuple parametrelerini kullanarak .NET işlevlerinden faydalanan curried parametreler kullanarak fonksiyonları karıştırmak tuhaf görünmektedir.

Bu nedenle NuGet'te FSharp uzantısına sahip olan paketleri göreceksiniz. Örneğin. MathNet Numerics ve MathNet Numerics FSharp. Bunlar, .NET kitaplığının deyimsel F # kullanımına izin veren sarıcı işlevleridir.

F # ile kullanılacak işlev ve yöntemleri ararken sıklıkla bu numarayı kullanırım. . NET'te arama yapmak için class anahtar sözcük olarak ve F # özel kodunda arama yapmak için module anahtar sözcük olarak. Örneğin

:

Google: MSDN string class
İlk madde: String Class

Google: MSDN string module
İlk madde: Duruma göre Core.String Module (F#)

+0

Siz bir Bilgi zenginsiniz. Seni nasıl takip edebilirim? Örneğin, YouTube, Bloglar, Podcast'ler, vb ... –

+2

Bilgimin çoğunu [F # top cevapları] (http://stackoverflow.com/tags/f%23/topusers) takip ederek okuyorum. yeni sorular burada. [CiteSeer] 'da (http://citeseer.ist.psu.edu/index) çok sayıda araştırma makalesi okuyorum ve çok sayıda kod yazdım. Son bir kaç ayda, Neural Networks'ün temelleri üzerinde durup sorunları çözmek için bir hafta veya daha fazla bir süre çözdüyseler bile. Yakın zamanda, sinir ağlarını ayıklamanın en iyi yollarından birinin görsel görüntüler ile olduğunu ve tüm ağırlıkların ve önyargıların değerlerine bakmadığını öğrendim. –

İlgili konular