Fsharp-structures

提供:Dev Guides
移動先:案内検索

F#-構造

F#の構造体は、値型のデータ型です。 単一の変数を作成し、さまざまなデータ型の関連データを保持するのに役立ちます。 struct キーワードは、構造の作成に使用されます。

構文

構造を定義するための構文は次のとおりです-

[ attributes ]
type [accessibility-modifier] type-name =
   struct
      type-definition-elements
   end
//or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
   type-definition-elements

2つの構文があります。 struct および end キーワードを使用する場合、 StructAttribute 属性を省略できるため、最初の構文が主に使用されます。

構造定義要素が提供します-

  • メンバーの宣言と定義。
  • コンストラクター、可変および不変フィールド。 *メンバーとインターフェースの実装。

クラスとは異なり、構造体は継承できず、letまたはdoバインディングを含めることはできません。 構造体にはletバインディングがありません。* val *キーワードを使用して、構造体でフィールドを宣言する必要があります。

*val* キーワードを使用してフィールドとそのタイプを定義する場合、フィールド値を初期化することはできず、代わりにゼロまたはnullに初期化されます。 したがって、暗黙のコンストラクターを持つ構造体の場合、 *val* 宣言には *DefaultValue* 属性で注釈が付けられます。

次のプログラムは、コンストラクタとともにライン構造を作成します。 プログラムは、構造を使用して行の長さを計算します-

type Line = struct
   val X1 : float
   val Y1 : float
   val X2 : float
   val Y2 : float

   new (x1, y1, x2, y2) =
      {X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;}
end
let calcLength(a : Line)=
   let sqr a = a * a
   sqrt(sqr(a.X1 - a.X2) + sqr(a.Y1 - a.Y2) )

let aLine = new Line(1.0, 1.0, 4.0, 5.0)
let length = calcLength aLine
printfn "Length of the Line: %g " length

あなたがプログラムをコンパイルして実行すると、次の出力が得られます-

Length of the Line: 5