Pengarah Kompilator
Topik ini menjelaskan pengarah prosesor dan pengarah kompilator.
Untuk pengarah F# Interactive (dotnet fsi
), lihat Pemrograman Interaktif dengan F# .
Pengarah Praprosesor
Pengarah praprosesor diawali dengan simbol # dan muncul pada baris dengan sendirinya. Ini ditafsirkan oleh praprosesor, yang berjalan sebelum kompilator itu sendiri.
Tabel berikut mencantumkan pengarah praprosesor yang tersedia di F#.
Direktif | Deskripsi |
---|---|
#if simbol |
Mendukung kompilasi bersyarat. Kode di bagian setelah #if disertakan jika simbol ditentukan. Simbol juga dapat dinegasikan dengan ! . |
#else |
Mendukung kompilasi bersyarat. Menandai bagian kode yang akan disertakan jika simbol yang digunakan dengan #if sebelumnya tidak ditentukan. |
#endif |
Mendukung kompilasi bersyarat. Menandai akhir bagian kode bersyarat. |
# [baris] int,# [baris] intstring,# [baris] intverbatim-string |
Menunjukkan baris kode sumber asli dan nama file, untuk debugging. Fitur ini disediakan untuk alat yang menghasilkan kode sumber F#. |
#nowarn warningcode |
Menonaktifkan peringatan atau peringatan kompilator. Untuk menonaktifkan peringatan, temukan nomornya dari output kompilator dan sertakan dalam tanda kutip. Hilangkan awalan "FS". Untuk menonaktifkan beberapa nomor peringatan pada baris yang sama, sertakan setiap nomor dalam tanda kutip, dan pisahkan setiap string dengan spasi. Misalnya: #nowarn "9" "40" |
Efek menonaktifkan peringatan berlaku untuk seluruh file, termasuk bagian dari file yang mendahului pengarah.|
Pengarah Kompilasi Bersyarat
Kode yang dinonaktifkan oleh salah satu pengarah ini tampak redup di Visual Studio Code Editor.
Catatan
Perilaku pengarah kompilasi bersyarat tidak sama seperti dalam bahasa lain. Misalnya, Anda tidak dapat menggunakan ekspresi Boolean yang melibatkan simbol, dan true
dan false
tidak memiliki arti khusus. Simbol yang Anda gunakan dalam pengarah if
harus ditentukan oleh baris perintah atau dalam pengaturan proyek; tidak ada define
pengarah praprosesor.
Kode berikut mengilustrasikan penggunaan pengarah #if
, #else
, dan #endif
. Dalam contoh ini, kode berisi dua versi definisi function1
. Ketika VERSION1
didefinisikan dengan menggunakan -tetapkan opsi kompilator, kode antara pengarah #if
dan pengarah #else
diaktifkan. Jika tidak, kode antara #else
dan #endif
diaktifkan.
#if VERSION1
let function1 x y =
printfn "x: %d y: %d" x y
x + 2 * y
#else
let function1 x y =
printfn "x: %d y: %d" x y
x - 2*y
#endif
let result = function1 10 20
Tidak ada #define
pengarah praprosesor di F#. Anda harus menggunakan opsi kompilator atau setelan proyek untuk menentukan simbol yang digunakan oleh pengarah #if
.
Pengarah kompilasi bersyarat dapat dikumpulkan. Lekukan tidak signifikan untuk pengarah praprosesor.
Anda juga dapat meniadakan simbol dengan !
. Dalam contoh ini, nilai string adalah sesuatu yang hanya ada saat tidak melakukan debug:
#if !DEBUG
let str = "Not debugging!"
#else
let str = "Debugging!"
#endif
Pengarah Garis
Saat membangun, kompilator melaporkan kesalahan dalam kode F# dengan merujuk nomor baris di mana setiap kesalahan terjadi. Nomor baris ini dimulai dari 1 untuk baris pertama dalam file. Namun, jika Anda membuat kode sumber F# dari alat lain, nomor baris dalam kode yang dihasilkan umumnya tidak menarik, karena kesalahan dalam kode F# yang dihasilkan kemungkinan besar muncul dari sumber lain. Pengarah #line
menyediakan cara bagi pembuat alat yang menghasilkan kode sumber F# untuk meneruskan informasi tentang nomor baris asli dan file sumber ke kode F# yang dihasilkan.
Saat Anda menggunakan pengarah #line
, nama file harus diapit tanda kutip. Kecuali jika token verbatim (@
) muncul di depan string, Anda harus menghindari karakter garis miring terbalik dengan menggunakan dua karakter garis miring terbalik alih-alih satu karakter untuk menggunakannya di jalur. Berikut ini adalah token baris yang valid. Dalam contoh ini, asumsikan bahwa file asli Script1
menghasilkan file kode F# yang dibuat secara otomatis saat dijalankan melalui alat, dan bahwa kode di lokasi pengarah ini dihasilkan dari beberapa token pada baris 25 dalam file Script1
.
# 25
#line 25
#line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"
#line 25 @"C:\Projects\MyProject\MyProject\Script1"
# 25 @"C:\Projects\MyProject\MyProject\Script1"
Token ini menunjukkan bahwa kode F# yang dihasilkan di lokasi ini berasal dari beberapa konstruksi pada atau dekat garis 25
in Script1
.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk