Tôi đã đọc phần chia sẻ vé F #, cả trên internet và sách nhưng chưa bao giờ thấy bất kỳ ai sử dụng bí danh dưới dạng tài liệu. Vì vậy, tôi sẽ nói đó không phải là thực hành tiêu chuẩn. Nó cũng có thể được xem như một dạng sao chép mã.
Nói chung, biểu diễn tuple cụ thể chỉ nên được sử dụng làm cấu trúc dữ liệu tạm thời trong một hàm. Nếu bạn đang lưu trữ một tuple trong một thời gian dài hoặc chuyển nó giữa các lớp khác nhau, thì đã đến lúc tạo một bản ghi.
Nếu bạn định sử dụng một công đoàn phân biệt đối xử trên nhiều lớp, hãy sử dụng các bản ghi như bạn đã đề xuất hoặc giữ tất cả các phương pháp được dàn xếp cho công đoàn phân biệt như dưới đây.
type NetworkEvent =
| Message of string * string * string
static member Create(sender, recipient, message) =
Message(sender, recipient, message)
member this.Send() =
math this with
| Message(sender, recipient, message) ->
printf "Sent: %A" message
let message = NetworkEvent.Create("me", "you", "hi")
Bạn có thể sử dụng records in pattern matching, vì vậy bộ dữ liệu thực sự là vấn đề thuận tiện và cần được thay thế bằng các bản ghi khi mã tăng lên.
Nếu một công đoàn bị phân biệt đối xử có một loạt các bộ dữ liệu có chữ ký giống nhau thì đã đến lúc chia thành hai công đoàn phân biệt đối xử. Điều này cũng sẽ ngăn không cho bạn có nhiều bản ghi có cùng chữ ký.
type NetworkEvent2 =
| UDPMessage of string * string * string
| Broadcast of string * string * string
| Loopback of string * string * string
| ConnectionRequest of string
| FlushEventQueue
vào
type MessageType =
| UDPMessage
| Broadcast
| Loopback
type NetworkEvent =
| Message of MessageType * string * string * string
| ConnectionRequest of string
| FlushEventQueue
Trong F # 3.1, chúng có thể có tên. –
@ JamesMoore Vâng, điều đó làm tôi hạnh phúc: D –