F#:如何将Map与集合(如Regex Matches)一起使用?

Jus*_*ier 5 f# map

秀... F#不再具有IEnumerable.map_with_type ......这是人的方式对集合的映射.我现在该怎么办?

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
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tom*_*cek 13

你会像这样写下最后一行:

let urls = Seq.map matchToUrl (Seq.cast matches);;
Run Code Online (Sandbox Code Playgroud)

这可以使用流水线操作符以更好的方式编写:

let urls = matches|> Seq.cast |> Seq.map matchToUrl;;
Run Code Online (Sandbox Code Playgroud)

F#自动确定什么是正确的目标类型(因为它知道什么matchToUrl样的).这仅适用于Seq,因此您可以使用List.of_seq再次将数据导入列表.