Поделиться через


Подробный синтаксис (F#)

Для многих конструкций в языке F# предусмотрено два вида синтаксиса: подробный синтаксис и упрощенный синтаксис.Подробный синтаксис менее распространен, однако имеет преимущество меньшей чувствительности к отступам.Упрощенный синтаксис более краток и предполагает использование отступов для обозначения начала и окончания конструкций вместо дополнительных ключевых слов, таких как begin, end, in и т. д.По умолчанию используется упрощенный синтаксис.В этом разделе описывается синтаксис конструкций F#, когда упрощенный синтаксис не включен.Подробный синтаксис включен всегда, поэтому, даже включив упрощенный синтаксис, можно по-прежнему использовать для некоторых конструкций подробный синтаксис.Отключить упрощенный синтаксис можно с помощью директивы #light "off".

Таблица конструкций

В следующей таблице показан упрощенный и подробный синтаксис для некоторых конструкций языка F# в контекстах, где между двумя видами синтаксиса имеются различия.В этой таблице в угловые скобки (<>) заключены вводимые пользователем элементы синтаксиса.Более подробные сведения о синтаксисе, используемом в этих конструкциях, см. в документации по соответствующим языковым конструкциям.

Языковая конструкция

Упрощенный синтаксис

Подробный синтаксис

составные выражения

<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

class

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

interface

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#)