F#:コレクション(正規表現一致など)でMapを使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/303284

  •  08-07-2019
  •  | 
  •  

質問

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

ありがとう!

役に立ちましたか?

解決

次のように最後の行を記述します:

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

そして、これはパイプライン演算子を使用してより良い方法で書くことができます:

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

F#は、( matchToUrl がどのように見えるかを知っているため)正しいターゲットタイプを自動的に判別します。これはSeqでのみ使用できるため、 List.of_seq を使用してデータをリストに再度取得できます。

他のヒント

Seq.castはあなたが探しているものですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top