詳細な構文 (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#)