Bagikan melalui


Sintaks Verbose

Ada dua bentuk sintaksis yang tersedia untuk banyak konstruksi dalam F#: sintaks verbose dan sintaks ringan. Sintaks verbose tidak seperti yang umum digunakan, tetapi memiliki keuntungan kurang sensitif terhadap indentasi. Sintaks ringan lebih pendek dan menggunakan indentasi untuk menandakan awal dan akhir konstruksi, daripada kata kunci tambahan seperti begin, end, in, dan sebagainya. Sintaks defaultnya adalah sintaks ringan. Topik ini menjelaskan sintaks untuk konstruksi F# ketika sintaks ringan tidak diaktifkan. Sintaks verbose selalu diaktifkan, jadi bahkan jika 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, tanda kurung sudut (<>) mengapit elemen sintaks yang disediakan pengguna. Lihat dokumentasi untuk setiap konstruksi bahasa untuk informasi lebih rinci tentang sintaksis yang digunakan dalam konstruksi ini.

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

pengikatan berlapis 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
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
rekor
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
structure
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
serikat terdiskriminasi
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
antarmuka
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
ekspresi objek
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
implementasi antarmuka
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
ekstensi jenis
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