詳細な構文 (F#)
F# 言語の多くの構成要素では、詳細な構文と簡易構文の 2 つの形式の構文を使用できます。 詳細な構文は、簡易構文ほど一般的には使用されませんが、インデントへの依存が少ないという利点があります。 簡易構文は、詳細な構文よりも短く、begin、end、in などの追加のキーワードの代わりにインデントを使用して、構成要素の先頭と末尾を示します。 既定の構文は、簡易構文です。 このトピックでは、簡易構文が有効になっていない場合の F# の構成要素の構文について説明します。 詳細な構文は常に有効です。したがって、簡易構文を有効にした場合でも、一部の構成要素に詳細な構文を使用できます。 簡易構文を無効にするには、#light "off" ディレクティブを使用します。
構成要素の表
次の表に、F# の言語構成要素の簡易構文と詳細な構文を、この 2 つの形式によって違いが生じるコンテキストで示します。 この表で、山かっこ (<>) は、ユーザーが指定した構文要素を囲みます。 これらの構成要素内で使用する構文の詳細については、各言語構成要素のドキュメントを参照してください。
複合式 |
<expression1>
<expression2>
|
<expression1>; <expression2>
|
入れ子になった let バインディング |
let f x =
let a = 1
let b = 2
x + a + b
|
let f x =
let a = 1 in
let b = 2 in
x + a + b
|
コード ブロック |
<expression1>
<expression2>
...
|
begin
<expression1>;
<expression2>;
end
|
for...do |
for counter = start to finish do
...
|
for counter = start .. finish do
...
done
|
while...do |
while <condition> do
...
|
while <condition> do
...
done
|
for...in |
for var in start .. finish do
...
|
for var in start .. finish do
...
done
|
do |
do ...
|
do ... in
|
レコード |
type <record-name> =
{
<field-declarations>
}
<value-or-member-definitions>
|
type <record-name> =
{
<field-declarations>
}
with
<value-or-member-definitions>
end
|
クラス |
type <class-name>(<params>) =
...
|
type <class-name>(<params>) =
class
...
end
|
構造体 |
[<StructAttribute>]
type <structure-name> =
...
|
type <structure-name> =
struct
...
end
|
判別共用体 |
type <union-name> =
| ...
| ...
...
<value-or-member definitions>
|
type <union-name> =
| ...
| ...
...
with
<value-or-member-definitions>
end |
インターフェイス |
type <interface-name> =
...
|
type <interface-name> =
interface
...
end
|
オブジェクト式 |
{ new <type-name>
with
<value-or-member-definitions>
<interface-implementations>
}
|
{ new <type-name>
with
<value-or-member-definitions>
end
<interface-implementations>
}
|
インターフェイスの実装 |
interface <interface-name>
with
<value-or-member-definitions>
|
interface <interface-name>
with
<value-or-member-definitions>
end
|
型拡張 |
type <type-name>
with
<value-or-member-definitions>
|
type <type-name>
with
<value-or-member-definitions>
end
|
モジュール |
module <module-name> =
...
|
module <module-name> =
begin
...
end
|
参照
概念
コードのフォーマットに関するガイドライン (F#)
その他の技術情報
F# 言語リファレンス
コンパイラ ディレクティブ (F#)