Bagikan melalui


Verbose Syntax

Ada dua bentuk sintaks yang tersedia untuk banyak konstruksi dalam F#: sintaks verbose dan sintaks ringan. Sintaks verbose tidak umum digunakan, tetapi memiliki keuntungan karena kurang sensitif terhadap indentasi. Sintaks ringan lebih pendek dan menggunakan indentasi untuk memberi sinyal awal dan akhir konstruksi, daripada kata kunci tambahan seperti begin, end, in, dan sebagainya. Sintaks default adalah sintaks ringan. Topik ini menguraikan sintaks untuk konstruksi F # ketika sintaks ringan tidak diaktifkan. Sintaks verbose selalu diaktifkan, jadi meskipun Anda mengaktifkan sintaks ringan, Anda masih dapat menggunakan sintaks verbose untuk beberapa konstruksi.

Tabel Konstruksi

Tabel berikut menunjukkan sintaks ringan dan verbose untuk konstruksi bahasa F # dalam konteks di mana ada perbedaan antara kedua bentuk. Dalam tabel ini, kurung sudut (<>) mengapit elemen sintaks yang disediakan pengguna. Lihat dokumentasi untuk setiap konstruksi bahasa untuk informasi lebih rinci tentang sintaks yang digunakan dalam konstruksi ini.

Konstruksi bahasa Sintaks ringan Sintaks verbose
ekspresi gabungan
<expression1>
<expression2>
<expression1>; <expression2>

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
blok kode
(
    <expression1>
    <expression2>
)
begin
    <expression1>;
    <expression2>;
end
'untuk... lakukan'
for counter = start to finish do
    ...
for counter = start to finish do
    ...
done
'sementara... lakukan'
while <condition> do
    ...
while <condition> do
    ...
done
'untuk... di'
for var in start .. finish do
    ...
for var in start .. finish do
    ...
done
'do'
do
    ...
do
    ...
in
Catatan
type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end
Kelas
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
Struktur
[<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
interface
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
modul
module <module-name> =
    ...
module <module-name> =
    begin
        ...
    end

Lihat juga