5

Soo... 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

谢谢!

4

2 回答 2

13

你会这样写最后一行:

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

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

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

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

于 2008-11-20T03:18:18.797 回答
3

Seq.cast 是您想要的吗?

于 2008-11-19T21:41:18.650 回答