ジェネリックの基礎
Midoliy|F#プログラミング

ジェネリックの概要
サンプルでみるジェネリック

ジェネリックの概要


 F#でのジェネリックの基本については こちら で簡単に紹介していますので、まずそちらをご覧ください。

 ジェネリックは、F#の関数値・メソッド・プロパティ・クラス・レコード・判別共用体・レコード型など、広範囲の型に利用することができます。ジェネリック制約には、少なくとも1つの型パラメータが含まれています。型を明示的に指定した、いわゆる「堅い」関数などでは、型ごとに同じコードを作成しなければなりません。それを回避するためにジェネリックを利用します。ジェネリックを利用することによって、型ごとに類似のコードを作ることなく、さまざまな型で機能するコードを作成することができます。

// ------------------
// [ 構文 ]
// ------------------
// 明示的なジェネリック関数定義
let function-name parameter-list =
function-body

// 明示的なジェネリックメソッド定義
[ static ] member object-identifer.method-name parameter-list [ return-type ] =
method-body

// 明示的なジェネリッククラス・ジェネリックレコード・ジェネリックインターフェース・
//      ジェネリック構造体・ジェネリック判別共用体の定義
type type-name type-definition

 構文中の <type-parameters> は、未知の型を表すカンマ区切りの型パラメータリストです。各パラメータは単一引用符(= ' )で始まり、必要に応じてその型パラメータに使用できる型をさらに制限する制限句を追加することが可能です。制限句はwhenキーワードを用いて宣言します。これについては、各型制約の項をご覧ください。


サンプルでみるジェネリック

   次の例では、明示的なジェネリックの簡単な利用方法を紹介しています。


 10行目の <'T> や、18行目の <'T1, 'T2>型制約 または、型パラメータ と言います。型制約にはさらに条件を加えることができます。それについては次項以降で紹介していきます。

 次の例では、暗黙的なジェネリックの簡単な利用方法を紹介しています。


 次節以降では、よく使われるジェネリック制約について紹介をしていきますが、本サイトで紹介するものがすべてではありません。もし、すべてのジェネリック制約について知りたい場合は、こちらの公式ドキュメントをご参照してみてください。