古いクラスのIEnumerable.GetEnumerator()
イテレータのみを公開する.NET標準ライブラリにはまだいくつか残っていますが、これはあまり親切ではありませんF#seq処理スタイル。私はどのように処理することができるリストにRegex.Match(...)
の結果のグループを得るために迅速なGoogleをやっていた、何も見つかりませんでした。F#:旧式のIEnumerable.GetEnumerator()スタイルイテレータをseqに変換
私はこれを持っていた:
open System.Text.RegularExpressions
let input = "args=(hello, world, foo, bar)"
let mtc = Regex.Match(input, "args=\(([\w\s,]+)\)")
私が好きなことは、配列として、またはリストとしてmtc.Groups
へのアクセスを得ることですが、それはあなたがたICollection
古風、ですので、それはこれを許可しないだけメソッドGetEnumerator()
を公開します。ですから、これは明確にするために(
error FS0001: The type 'Text.RegularExpressions.GroupCollection' is not compatible with the type 'seq<'a>
、その結果として、あなたは
mtc.Groups |> Seq.skip 1 // <=== THIS QUESTION IS ABOUT HOW TO ACHIEVE THIS
を行うことはできません
mtc.Groups.[1].Value
行うことができますが、GroupCollection
はIEnumerable
のサブインタフェースである、ICollection
を実装しています。 )
ですから、どうすればよいですか?私はきちんとGetEnumerator()
をseqに変えますか?
これはまれなことではありませんが、実際これは詐欺です。 GetEnumerator()は一度も言及されていないので、私はオリジナルを見つけられなかったと推測しています。それ以外は、全く同じです。 – mt99