Bagikan melalui


Nilai

Nilai dalam F# adalah jumlah yang memiliki jenis tertentu; nilai dapat berupa bilangan titik integral atau floating, karakter atau teks, daftar, urutan, array, tuple, gabungan diskriminasi, rekaman, jenis kelas, atau nilai fungsi.

Mengikat Nilai

Istilah pengikatan berarti mengaitkan nama dengan definisi. Kata let kunci mengikat nilai, seperti dalam contoh berikut:

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

Jenis nilai disimpulkan dari definisi. Untuk jenis primitif, seperti bilangan titik integral atau floating, jenis ditentukan dari jenis literal. Oleh karena itu, dalam contoh sebelumnya, pengkompilasi menyimpulkan jenis b menjadi unsigned int, sedangkan pengkompilasi menyimpulkan jenis a menjadi int. Jenis nilai fungsi ditentukan dari nilai pengembalian dalam isi fungsi. Untuk informasi selengkapnya tentang jenis nilai fungsi, lihat Fungsi. Untuk informasi selengkapnya tentang jenis harfiah, lihat Literal.

Pengkompilasi tidak mengeluarkan diagnostik tentang pengikatan yang tidak digunakan secara default. Untuk menerima pesan ini, aktifkan peringatan 1182 dalam file proyek Anda atau saat memanggil pengkompilasi (lihat --warnon di bawah Opsi Pengkompilasi).

Mengapa Tidak Dapat Diubah?

Nilai yang tidak dapat diubah adalah nilai yang tidak dapat diubah selama eksekusi program. Jika Anda terbiasa dengan bahasa seperti C++, Visual Basic, atau C#, Anda mungkin merasa heran bahwa F# menempatkan primasi atas nilai yang tidak dapat diubah daripada variabel yang dapat ditetapkan nilai baru selama eksekusi program. Data yang tidak dapat diubah adalah elemen penting dari pemrograman fungsi. Dalam lingkungan multithreaded, variabel yang dapat diubah bersama yang dapat diubah oleh banyak utas yang berbeda sulit dikelola. Selain itu, dengan variabel yang dapat diubah, terkadang sulit untuk mengetahui apakah variabel dapat diubah ketika diteruskan ke fungsi lain.

Dalam bahasa fungsional murni, tidak ada variabel, dan fungsi berperilaku ketat sebagai fungsi matematika. Di mana kode dalam bahasa prosedural menggunakan penetapan variabel untuk mengubah nilai, kode yang setara dalam bahasa fungsional memiliki nilai yang tidak dapat diubah yaitu input, fungsi yang tidak dapat diubah, dan nilai yang tidak dapat diubah yang berbeda sebagai output. Ketatnya matematika ini memungkinkan penalaran yang lebih ketat tentang perilaku program. Penalaran yang lebih ketat inilah yang memungkinkan pengkompilasi memeriksa kode dengan lebih ketat dan mengoptimalkan lebih efektif, dan membantu mempermudah pengembang untuk memahami dan menulis kode yang benar. Oleh karena itu, kode fungsional cenderung lebih mudah di-debug daripada kode prosedural biasa.

F# bukan bahasa fungsi murni, namun sepenuhnya mendukung pemrograman fungsi. Menggunakan nilai yang tidak dapat diubah adalah praktik yang baik karena melakukan ini memungkinkan kode Anda mendapatkan manfaat dari aspek penting pemrograman fungsi.

Variabel yang Dapat Diubah

Anda dapat menggunakan kata kunci mutable untuk menentukan variabel yang dapat diubah. Variabel yang dapat diubah dalam F# umumnya harus memiliki cakupan terbatas, baik sebagai bidang jenis atau sebagai nilai lokal. Variabel yang dapat diubah dengan cakupan terbatas lebih mudah dikontrol dan cenderung tidak dimodifikasi dengan cara yang salah.

Anda dapat menetapkan nilai awal ke variabel yang dapat diubah dengan menggunakan let kata kunci dengan cara yang sama seperti Anda akan menentukan nilai. Namun, perbedaannya adalah Anda kemudian dapat menetapkan nilai baru ke variabel yang dapat diubah dengan menggunakan <- operator, seperti dalam contoh berikut.

let mutable x = 1
x <- x + 1

Nilai yang ditandai mutable dapat dipromosikan 'a ref secara otomatis jika diambil oleh penutupan, termasuk formulir yang membuat penutupan, seperti seq penyusun. Jika Anda ingin diberi tahu ketika ini terjadi, aktifkan peringatan 3180 di file proyek Anda atau saat memanggil pengkompilasi.

Judul Deskripsi
biarkan Pengikatan Menyediakan informasi tentang menggunakan let kata kunci untuk mengikat nama ke nilai dan fungsi.
Fungsi Menyediakan gambaran umum fungsi di F#.

Lihat juga