2008-11-19 47 views
5

Soo ... F#不再具有IEnumerable.map_with_type ...這是人們通過對進行映射的方式。我現在該怎麼做?F#:我如何使用地圖集合(如正則表達式匹配)?

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 

謝謝!

+1

這是爲什麼減少? – 2008-11-20 03:59:56

回答

12

你會寫的最後一行是這樣的:

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

,並能在一個更好的方式使用流水線操作員來寫成:

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

F#自動計算出什麼是正確的目標類型(因爲它知道什麼matchToUrl看起來像)。這僅適用於Seq,因此您可以使用List.of_seq將數據重新獲取到列表中。

3

是Seq.cast你在找什麼?

+0

聽起來像它......這將如何工作?我嘗試了谷歌搜索,但沒有發現任何有用的東西。 – 2008-11-19 21:59:44