3

int型名 ( 、 またはstring、さらにはユーザー定義型の名前など) を関数パラメーターとして渡したいと思います。現在、私は次のことを行っています:

type IntegerOrIntegerList =
    | Integer of int
    | IntegerList of int list

let f (n : int) (d : 'T) : IntegerOrIntegerList =
    match (box d) with
    | :? int as i -> Integer(n)
    | _ -> IntegerList([0 .. n])

しかし、d上記の存在は偶発的です。上記のロジックを表現する慣用的な F# の方法は何でしょうか?

よろしくお願いします。

4

1 に答える 1

8

タイプ引数を使用できます:

let f<'T> (n : int) =
  if typeof<'T> = typeof<int> then Integer(n)
  else IntegerList([0 .. n])
于 2013-01-08T18:24:59.533 に答える