1

これが私が書いたコードスニペットです:

let Foo (a : (int * int) seq) =  ();;
val Foo : seq<int * int> -> unit

let inline Bar (a : (a' * int) seq) = ();;
let Bar (a : (a' * int) seq) =
--------------^^
stdin(8,15): error FS0039: The type 'a'' is not defined
>

私の意図は、またはBarのようなさまざまなタイプのタプルを渡すことができる関数であるべきだということでした。関数をこのように定義できないのはなぜですか?(string * int)(float * int)

4

3 に答える 3

4

ティック(')は、型変数の後ではなく、型変数の前にあります(つまり、'aではなく、を使用しますa')。

inlineまた、宣言で使用する必要はほとんどありません。

于 2012-09-26T18:11:15.960 に答える
2

ここで本当に型注釈が必要ですか?これはよりクリーンで同じタイプです:

let Bar a =
  for c, d in a do
    printfn "%A, %d" c d
于 2012-09-26T18:30:14.370 に答える
2

<>を使用して関数を明示的にジェネリックにして、ジェネリック型を導入できます。

let Bar<'a> (a: ('a * int) seq) = ()
于 2012-09-26T18:08:29.863 に答える