Tôi đã thực hiện một vài thí nghiệm với trình biên dịch F # và đây là một số quan sát của tôi. Nếu bạn muốn tạo chữ IL, thì bạn cần đặt giá trị được đánh dấu là Literal
bên trong một mô-đun. Ví dụ như thế này:
module Constants =
[<Literal>]
let Num = 1
Là một phụ lưu ý, tôi đã làm một tìm kiếm nhanh thông qua F # đặc điểm kỹ thuật và có vẻ như rằng literals có thể rất hữu ích cho phù hợp với mô hình, bởi vì bạn có thể sử dụng chúng như là một mô hình (như miễn là họ bắt đầu với một ký tự hoa):
open Constants
match 1 with
| Num -> "1"
| _ -> "other"
Bây giờ, câu hỏi là, tại sao Literal
không cư xử như bạn mong chờ khi bạn đặt nó bên trong một tuyên bố loại. Tôi nghĩ lý do là tuyên bố let
bên trong khai báo loại F # không thể công khai và sẽ chỉ hiển thị bên trong lớp/loại. Tôi tin rằng cả hai giá trị C# và F # inline literal khi bạn sử dụng chúng và điều này cũng được thực hiện bên trong các khai báo kiểu. Tuy nhiên, vì chữ không thể công khai, không có lý do gì để tạo ra trường literal
IL, bởi vì không ai có thể truy cập nó.
Nguồn
2010-03-08 19:02:43
Tôi đã đặt câu hỏi này - http://stackoverflow.com/questions/1834923/f-public-literal - và Chris Smith cho biết điều đó là không thể. – Daniel