Bất cứ ai có thể giải thích tại sao ví dụ thứ hai bên dưới sẽ không biên dịch?Tại sao 'Mã không đủ chung'?
'Kiểm tra 2' cung cấp cho "lỗi FS0670: Mã này không đủ chung chung. Biến kiểu^a không thể tổng quát được vì nó sẽ thoát khỏi phạm vi của nó.". Tôi không hiểu thông báo lỗi này.
// Test 1
type test1<'a> = | A of 'a
with
override t.ToString() =
match t with
| A a -> a.ToString()
// Test 2
type test2<'a> = | A of 'a
with
override t.ToString() =
match t with
| A a -> string a
// Test 3
type test3<'a> = | A of 'a
with
override t.ToString() =
match t with
| A a -> string (a :> obj)
'chuỗi' [thực tế là '' T -> chuỗi'] (http://msdn.microsoft.com/en-gb/library/ee340491.aspx), vì vậy điều này sẽ hoạt động theo lý thuyết. Tôi không có một lời giải thích tốt hơn cho các lỗi mặc dù. –
Ồ vâng, tôi chỉ bị mắc kẹt chuỗi ;; vào F # tương tác để có được loại. Có lẽ thực sự sử dụng chuỗi là buộc biên dịch buộc một loại trên đầu vào, và nó chọn obj là mẫu số chung thấp nhất? – Massif