Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengikatan mengaitkan pengidentifikasi dengan nilai atau fungsi. Anda menggunakan let kata kunci untuk mengikat nama ke nilai atau fungsi.
Sintaksis
// Binding a value:
let identifier-or-pattern [: type] =expressionbody-expression
// Binding a function value:
let identifier parameter-list [: return-type ] =expressionbody-expression
Komentar
Kata let kunci digunakan dalam ekspresi pengikatan untuk menentukan nilai atau nilai fungsi untuk satu atau beberapa nama. Bentuk let ekspresi paling sederhana mengikat nama ke nilai sederhana, sebagai berikut.
let i = 1
Jika Anda memisahkan ekspresi dari pengidentifikasi dengan menggunakan baris baru, Anda harus mengindentasi setiap baris ekspresi, seperti dalam kode berikut.
let someVeryLongIdentifier =
// Note indentation below.
3 * 4 + 5 * 6
Alih-alih hanya nama, pola yang berisi nama dapat ditentukan, misalnya, tuple, seperti yang ditunjukkan dalam kode berikut.
let i, j, k = (1, 2, 3)
Ekspresi isi adalah ekspresi tempat nama digunakan. Ekspresi isi muncul pada barisnya sendiri, diindentasi untuk berbaris persis dengan karakter pertama dalam let kata kunci:
let result =
let i, j, k = (1, 2, 3)
// Body expression:
i + 2 * j + 3 * k
Pengikatan let dapat muncul di tingkat modul, dalam definisi jenis kelas, atau dalam cakupan lokal, seperti dalam definisi fungsi. Pengikatan let di tingkat atas dalam modul atau dalam jenis kelas tidak perlu memiliki ekspresi isi, tetapi pada tingkat cakupan lain, ekspresi isi diperlukan. Nama terikat dapat digunakan setelah titik definisi, tetapi tidak pada titik mana pun sebelum let pengikatan muncul, seperti yang diilustrasikan dalam kode berikut.
// Error:
printfn "%d" x
let x = 100
// OK:
printfn "%d" x
Pengikatan Fungsi
Pengikatan fungsi mengikuti aturan untuk pengikatan nilai, kecuali bahwa pengikatan fungsi menyertakan nama fungsi dan parameter, seperti yang ditunjukkan dalam kode berikut.
let function1 a = a + 1
Secara umum, parameter adalah pola, seperti pola tuple:
let function2 (a, b) = a + b
Ekspresi let pengikatan mengevaluasi ke nilai ekspresi terakhir. Oleh karena itu, dalam contoh kode berikut, nilai result dihitung dari 100 * function3 (1, 2), yang mengevaluasi ke 300.
let result =
let function3 (a, b) = a + b
100 * function3 (1, 2)
Untuk informasi selengkapnya, lihat Fungsi.
Ketik Anotasi
Anda dapat menentukan jenis untuk parameter dengan menyertakan titik dua (:) diikuti dengan nama jenis, semua diapit dalam tanda kurung. Anda juga dapat menentukan jenis nilai pengembalian dengan menambahkan titik dua dan mengetik setelah parameter terakhir. Anotasi jenis lengkap untuk function1, dengan bilangan bulat sebagai jenis parameter, adalah sebagai berikut.
let function1 (a: int) : int = a + 1
Ketika tidak ada parameter jenis eksplisit, inferensi jenis digunakan untuk menentukan jenis parameter fungsi. Ini dapat mencakup menggeneralisasi jenis parameter secara otomatis menjadi generik.
Untuk informasi selengkapnya, lihat Generalisasi Otomatis dan Inferensi Jenis.
biarkan Pengikatan di Kelas
Pengikatan let dapat muncul dalam jenis kelas tetapi tidak dalam struktur atau jenis rekaman. Untuk menggunakan biarkan pengikatan dalam jenis kelas, kelas harus memiliki konstruktor utama. Parameter konstruktor harus muncul setelah nama jenis dalam definisi kelas. Pengikatan let dalam jenis kelas menentukan bidang privat dan anggota untuk jenis kelas tersebut dan, bersama dengan do pengikatan dalam jenis tersebut, membentuk kode untuk konstruktor utama untuk jenis tersebut. Contoh kode berikut menunjukkan kelas MyClass dengan bidang field1 privat dan field2.
type MyClass(a) =
let field1 = a
let field2 = "text"
do printfn "%d %s" field1 field2
member this.F input =
printfn "Field1 %d Field2 %s Input %A" field1 field2 input
Cakupan field1 dan field2 terbatas pada jenis di mana mereka dideklarasikan. Untuk informasi selengkapnya, lihat let Pengikatan di Kelas dan Kelas.
Ketik Parameter di biarkan Pengikatan
Pengikatan let pada tingkat modul, dalam jenis, atau dalam ekspresi komputasi dapat memiliki parameter jenis eksplisit. Membiarkan pengikatan dalam ekspresi, seperti dalam definisi fungsi, tidak dapat memiliki parameter jenis. Untuk informasi selengkapnya, lihat Generik.
Atribut pada biarkan Pengikatan
Atribut dapat diterapkan ke pengikatan tingkat let atas dalam modul, seperti yang ditunjukkan dalam kode berikut.
[<Obsolete>]
let function1 x y = x + y
Cakupan dan Aksesibilitas Biarkan Pengikatan
Cakupan entitas yang dideklarasikan dengan pengikatan biarkan terbatas pada bagian cakupan yang berisi (seperti fungsi, modul, file atau kelas) setelah pengikatan muncul. Oleh karena itu, dapat dikatakan bahwa mari mengikat memperkenalkan nama ke dalam cakupan. Dalam modul, nilai atau fungsi let-bound dapat diakses oleh klien modul selama modul dapat diakses, karena pengikatan biarkan dalam modul dikompilasi ke dalam fungsi publik modul. Sebaliknya, biarkan pengikatan di kelas bersifat privat ke kelas.
Biasanya, fungsi dalam modul harus memenuhi syarat dengan nama modul saat digunakan oleh kode klien. Misalnya, jika modul Module1 memiliki fungsi function1, pengguna akan menentukan Module1.function1 untuk merujuk ke fungsi .
Pengguna modul dapat menggunakan deklarasi impor untuk membuat fungsi dalam modul tersebut tersedia untuk digunakan tanpa memenuhi syarat dengan nama modul. Dalam contoh yang baru saja disebutkan, pengguna modul dapat dalam hal ini membuka modul dengan menggunakan deklarasi open Module1 impor dan setelahnya merujuk ke function1 secara langsung.
module Module1 =
let function1 x = x + 1.0
module Module2 =
let function2 x =
Module1.function1 x
open Module1
let function3 x =
function1 x
Beberapa modul memiliki atribut RequireQualifiedAccess, yang berarti bahwa fungsi yang diekspos harus memenuhi syarat dengan nama modul. Misalnya, modul Daftar F# memiliki atribut ini.
Untuk informasi selengkapnya tentang modul dan kontrol akses, lihat Modul dan Kontrol Akses.