冗語構文Verbose Syntax

多くの構成要素に使用できる 2 つの形式の構文は、F#言語:冗語構文軽量構文します。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. などの他のキーワード、軽量構文が短いとインデントを先頭と末尾、コンストラクトの使用ではなくbeginendinなど。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

次の表では、F# 言語コンストラクトの軽量と詳細な構文を示しますのコンテキストで 2 つの形式の違いがあります。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
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
構造体structure
[<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