Bagikan melalui


Nilai

Nilai dalam F# adalah jumlah yang memiliki jenis tertentu; nilai dapat berupa nomor titik integral atau mengambang, karakter atau teks, daftar, urutan, array, tuple, gabungan terdiskriminasi, catatan, jenis kelas, atau nilai fungsi.

Mengikat Nilai

Istilah pengikatan berarti mengaitkan nama dengan definisi. Kata kunci let 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 tipe primitif, seperti bilangan titik integral atau mengambang, jenis ditentukan dari jenis harfiah. Jadi, dalam contoh sebelumnya, pengompilasi menyimpulkan jenis b menjadi unsigned int, sedangkan pengompilasi menyimpulkan jenis a menjadi int. Jenis nilai fungsi ditentukan dari nilai yang ditampilkan dalam isi fungsi. Untuk informasi selengkapnya tentang jenis nilai fungsi, lihat Fungsi. Untuk informasi selengkapnya tentang jenis harfiah, lihat Harfiah.

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

Mengapa Bersifat Tetap?

Nilai tetap adalah nilai yang tidak dapat diubah selama eksekusi program. Jika terbiasa menggunakan bahasa seperti C++, Visual Basic, atau C#, Anda mungkin merasa terkejut bahwa F# menempatkan keunggulan di atas nilai tetap dibandingkan variabel yang dapat diberi nilai baru selama eksekusi program. Data tetap adalah elemen penting dari pemrograman fungsional. Dalam lingkungan multirangkaian, variabel dinamis bersama yang dapat diubah oleh banyak rangkaian yang berbeda sulit dikelola. Selain itu, dengan variabel dinamis, mengetahui apakah variabel dapat diubah ketika diteruskan ke fungsi lain terkadang sulit dilakukan.

Dalam bahasa fungsional murni, tidak ada variabel, dan fungsi berperilaku secara terbatas sebagai fungsi matematika. Jika kode dalam bahasa prosedural menggunakan penetapan variabel untuk mengubah nilai, kode yang setara dalam bahasa fungsional memiliki nilai tetap yaitu input, fungsi tetap, dan nilai tetap yang berbeda sebagai output. Sifat ketat matematika ini memungkinkan penalaran yang lebih ketat tentang perilaku program. Penalaran yang lebih ketat inilah yang memungkinkan pengompilasi memeriksa kode lebih ketat dan mengoptimalkan lebih efektif, dan membantu memudahkan pengembang untuk memahami dan menulis kode yang benar. Jadi, kode fungsional cenderung lebih mudah untuk di-debug dibandingkan kode prosedural biasa.

F# bukanlah bahasa fungsional murni, tetapi sepenuhnya mendukung pemrograman fungsional. Menggunakan nilai-nilai tetap adalah praktik yang tepat karena dengan melakukannya, memungkinkan kode Anda memperoleh manfaat dari aspek penting dari pemrograman fungsional.

Variabel Dinamis

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

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

let mutable x = 1
x <- x + 1

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

Judul Deskripsi
izinkan Pengikatan Menyediakan informasi tentang cara menggunakan kata kunci let untuk mengikat nama ke nilai dan fungsi.
Fungsi Memberikan gambaran umum fungsi dalam F#.

Lihat juga