2010-03-02 27 views
32

F # 'da yeni. VS2008 kabuk ve F # etkileşimini kullanıyorum. Ben "System.String.Split" kullanarak bir dize bölmek için deneyin ama sonra hatayı alıyorum: Ben nasıl kullanırımF #, Bölünmüş Dize ve .Net yöntemleri

let Count text = 
    let words = System.String.Split [' '] text 
    let nWords = words.Length 
    (nWords) 

:

kod örneği "Bölünmüş statik bir yöntem değildir" F # gibi dize yöntemleri?

cevap

45

Sen örneği yöntemleri olarak diyoruz:

let Count (text : string) = 
    let words = text.Split [|' '|] 
    let nWords = words.Length 
    (nWords) 

(sen Bölünmüş bir liste bir dizi değil sürer çünkü [| |] kullanmak gerekir unutmayın; Split bir params dizisi alır çünkü Joel Mueller yorumuna göre, ya sizi Ayrı ayrı argümanlar olarak (örn. text.Split(' ', '\n')) geçebilir.)

+7

Bölünmüş Bir dizide bir geçebilir anlamına gelen bir params dizisi alır veya

#r "FSharp.PowerPack.dll";; #r "FSharp.PowerPack.Compatibility.dll";; 

Uzman F # için doğrularını bakın eklemelisiniz Bir dizi olmadan bir veya daha fazla karakter değişmezini kolayca geçirebilirsiniz. text.Split '' veya 'text.Split '', '\ n' (parenseli veya parensiz) mükemmel şekilde geçerlidir. –

+7

@Joel - İkinci örneğiniz çalışmıyor; ikinci yarı olarak "\ n" ile bir tuple oluşturur. Ancak text.split ('', '\ n') 'olarak adlandırıldığında çalışır. – kvb

+0

Kvb - Haklısınız, FSI'daki çıkışı yanlış okudum. İşe yattığında şaşırdım. –