取得するタイプを指定するには、実際には 2 つの方法があります。Brian は、型パラメーターを関数に明示的に指定してこれを行う方法を投稿しました。
let res = Seq.cast<Match> v.Captures
もう 1 つのオプションは、任意の F# 式の前後に配置できる型注釈を使用し、式の型を指定することです。これにより、コンパイラの型推論をヒントにすることができます (一部の式に特定の型があることを示すことによって)。何らかの巧妙な方法で情報を提供すると、コンパイラは型パラメーターがSeq.cast
どうあるべきかを判断できます。いくつかの例:
// By specifying type of the value
let (res:seq<Match>) = Seq.cast v.Captures
// By specifying return type of a function
let getCaptures () : seq<Match> =
// ...
Seq.cast v.Captures
// By specifying element type when iterating over the result
for (m:Match) in Seq.cast v.Captures do
// ...
すべてのオプションから、Brians (明示的) と私の 2 番目 (関数の戻り値の型) が最も慣用的なものだと思いますが、最も読みやすいと思われるオプションを選択できます。