Trong F # tôi có thể sử dụng đối sánh mẫu ở nhiều vị trí khác nhau trong cú pháp.Làm thế nào để hủy cấu trúc một đối số hàm tạo?
Ví dụ:
// Given this type...
type SingleCaseUnion = | SingleCaseUnion of int
/// ...I can do this:
let destructureInFunc (SingleCaseUnion n) =
printfn "%d" n
// ...and this:
type DestructureInMethod() =
member t.M(SingleCaseUnion n) =
printfn "%d" n
Nhưng tôi không thể làm việc ra làm thế nào để làm điều này:
type DestructureInCtor(SingleCaseUnion n) =
do printfn "%d" n
// type DestructureInCtor(SingleCaseUnion n) =
// ---------------------------------------^
//
// stdin(3,40): error FS0010: Unexpected identifier in type definition. Expected ')' or other token.
Tôi có cú pháp sai, hoặc làm F # không hỗ trợ mô hình phù hợp với các thông số constructor ?
Mặc dù nó không hoạt động đối với các nhà xây dựng * chính *, các nhà xây dựng khác (thứ cấp) cho phép nó. * (Đăng lại như bình luận từ câu trả lời của tôi trở nên không cần thiết.) * – Vandroiy