Jenis Unit
Jenis unit
adalah jenis yang menunjukkan ketiadaan nilai tertentu; jenis unit
hanya memiliki nilai tunggal, yang bertindak sebagai tempat penampung ketika tidak ada nilai lain atau saat diperlukan.
Sintaks
// The value of the unit type.
()
Keterangan
Setiap ekspresi F# harus melakukan evaluasi ke nilai. Untuk ekspresi yang tidak menghasilkan nilai yang menarik, nilai jenis unit
digunakan. Jenis unit
ini menyerupai jenis void
dalam bahasa seperti C# dan C++.
Jenis unit
memiliki nilai tunggal, dan nilai tersebut ditunjukkan oleh token ()
.
Nilai jenis unit
ini sering digunakan dalam pemrograman F# untuk menampung tempat saat nilai diperlukan oleh sintaks bahasa pemrogram, tetapi ketika tidak ada nilai yang diperlukan atau diinginkan. Contohnya mungkin nilai pengembalian dari fungsi printf
. Karena tindakan penting dari operasi printf
terjadi dalam fungsi, fungsi tidak harus mengembalikan nilai aktual. Oleh karena itu, nilai pengembalian berjenis unit
.
Beberapa konstruksi mengharapkan nilai unit
. Misalnya, pengikatan do
atau kode apa pun di tingkat atas modul diharapkan untuk mengevaluasi ke nilai unit
. Kompilator melaporkan peringatan saat pengikatan do
atau kode di tingkat atas modul menghasilkan hasil selain nilai unit
yang tidak digunakan, seperti yang ditunjukkan dalam contoh berikut.
let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore
Peringatan ini adalah karakteristik pemrograman fungsional; peringatan ini tidak muncul dalam bahasa pemrograman .NET lainnya. Dalam program fungsional murni, saat fungsi tidak memiliki efek samping, nilai pengembalian akhir merupakan satu-satunya hasil dari panggilan fungsi. Oleh karena itu, ketika hasilnya diabaikan, kemungkinan itu merupakan kesalahan pemrograman. Meskipun F# bukan bahasa pemrograman fungsional yang murni, ini merupakan praktik yang baik untuk mengikuti gaya pemrograman fungsional jika memungkinkan.