2008-11-19 6 views
5

Soo ... F # artık IEnumerable.map_with_type artık yok. Bu sayede insanlar numaralı telefon üzerinden koleksiyonları eşleştiriyor. Bunu şimdi nasıl yaparım?F #: Harita'yı Koleksiyon ile nasıl kullanırım (Regex Eşleşmeleri gibi)?

let urlPat = "href\\s*=\\s*(?:(?:\\\"(?<url>[^\\\"]*)\\\")|(?<url>[^\\s]*))";; 
let urlRegex = new Regex(urlPat) 
let matches = 
    urlRegex.Matches(http("http://www.google.com")) 

let matchToUrl (urlMatch : Match) = urlMatch.Value 
let urls = List.map matchToUrl matches 

Teşekkürler!

+1

Bu neden işaretlendi? –

cevap

12

böyle son satırı yazardı:

let urls = Seq.map matchToUrl (Seq.cast matches);; 

Ve bu ardışık düzen operatörü kullanarak daha güzel bir şekilde yazılabilir:

let urls = matches|> Seq.cast |> Seq.map matchToUrl;; 

F # otomatik doğru hedef türüdür anlamadan (çünkü matchToUrl'un neye benzediğini bilir). Bu sadece Seq için kullanılabilir, böylece verileri tekrar bir listeye almak için List.of_seq'u kullanabilirsiniz.

3

Seq.cast nedir?

+0

Öyle görünüyor ... bu nasıl çalışır? Googling'i denedim ama yararlı bir şey bulamadım. –

+0

Tomas'ın yanıtını görün. Seq.cast bir IEnumerable alır ve IEnumerable (ve genellikle sizin adınıza T gönderir) dönüştürür. – Brian