冗語構文Verbose Syntax

F# 言語の多くの構文には、詳細な構文簡易構文の 2 種類の構文が用意されています。There are two forms of syntax available for many constructs in the F# language: verbose syntax and lightweight syntax. 詳細な構文は、一般的には使用されませんが、インデントに対する感度が低いという利点があります。The verbose syntax is not as commonly used, but has the advantage of being less sensitive to indentation. 軽量構文は短く、インデントを使用して、 beginendなどのin追加のキーワードではなく、コンストラクトの先頭と末尾を通知します。The lightweight syntax is shorter and uses indentation to signal the beginning and end of constructs, rather than additional keywords like begin, end, in, and so on. 既定の構文は、簡易構文です。The default syntax is the lightweight syntax. このトピックでは、簡易構文が有効でない場合の F# コンストラクトの構文について説明します。This topic describes the syntax for F# constructs when lightweight syntax is not enabled. 詳細構文は常に有効であるため、簡易構文を有効にしても、一部の構文では詳細構文を使用できます。Verbose syntax is always enabled, so even if you enable lightweight syntax, you can still use verbose syntax for some constructs. ディレクティブを使用して、簡易構文を#light "off"無効にすることができます。You can disable lightweight syntax by using the #light "off" directive.

コンストラクトの表Table of Constructs

次の表は、2 つの形式の間に違いがあるコンテキストでの F# 言語構成要素の軽量構文と詳細構文を示しています。The following table shows the lightweight and verbose syntax for F# language constructs in contexts where there is a difference between the two forms. この表では、山かっこ (<>) でユーザーが指定した構文要素を囲みます。In this table, angle brackets (<>) enclose user-supplied syntax elements. これらの構文で使用される構文の詳細については、各言語構成要素のドキュメントを参照してください。Refer to the documentation for each language construct for more detailed information about the syntax used within these constructs.

言語構成Language construct 軽量構文Lightweight syntax 詳細構文Verbose syntax
複合式compound expressions
<expression1 />
<expression2 />
<expression1>; <expression2>

ネストされたletバインディングnested let bindings

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
コード ブロックcode block
(
    <expression1>
    <expression2>
)
begin
    <expression1>;
    <expression2>;
end
`for...do`
for counter = start to finish do
    ...
for counter = start to 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
レコード (record)record
type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end
classclass
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
structurestructure
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
差別化組合discriminated union
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
interfaceinterface
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
オブジェクト式object expression
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
インターフェイスの実装interface implementation
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
型拡張子type extension
type <type-name>
    with
        <value-or-member-definitions>
type <type-name>
    with
        <value-or-member-definitions>
    end
namemodule
module <module-name> =
    ...
module <module-name> =
    begin
        ...
    end

関連項目See also