それぞれのフィールド名をプログラマが決定できるという点を除けば、 レコードはタプルと良く似ています。 同様にレコード型もタプル型と良く似ています。 例えばレコード型 point2D は以下のように定義できます。
x と y はこの型のレコード値における2つのフィールドの名前です。 またレコードのフィールドのことを要素と呼ぶことがあります。 特殊な記号である @{ はその型が フラット/ネイティブ/アンボックス化 レコードであることを表わします。 型 point2D の値は次のように theOrigin という名前で生成することができます。レコードから要素を選択するために一般的なドット表記を使うことができます。 次のようなコードになります。
あるいは要素の選択にパターンマッチを使うこともできます。 これは次のようなコードになります。 この例では theOrigin_x と theOrigin_y の名前はそれぞれ、theOrigin の中にある x と y という名前の要素に束縛されています。 もし要素全てではなく一部を選択したい場合には、次のようなパターンマッチを使うことができます。val @{ x= theOrigin_x, ... } = theOrigin // the x-component only val @{ y= theOrigin_y, ... } = theOrigin // the y-component only
ネイティブ/フラット/アンボックス化 レコードと比較してボックス化レコードを扱うのに必要なことは、 特殊記号を代えるだけです。 つまり @{ を '{ に代えるだけです。