2012-04-16 36 views

Trả lời

14

Không có sự khác biệt, và có, chúng có thể được sử dụng thay thế cho nhau ngay cả sau khi khai báo.

Nhưng đừng chú ý F# Component Design Guidelines khuyến nghị (Phần 4.2):

Xem xét sử dụng cú pháp tiền tố cho generics (Foo<T>) ưu tiên cú pháp postfix (T Foo), với bốn trường hợp ngoại lệ đáng chú ý (list, option , array, ref).

F # kế thừa cả kiểu đặt tên mã bưu điện ML theo kiểu các loại chung, ví dụ: “int list” cũng như kiểu tiền tố .NET, ví dụ: “list<int>”. Bạn nên chọn kiểu .NET, ngoại trừ bốn loại cụ thể. Đối với danh sách F #, hãy sử dụng biểu mẫu postfix: “int list” thay vì “list<int>”. Đối với các tùy chọn, hãy sử dụng biểu mẫu postfix: “int option” thay vì “option<int>”. Đối với mảng, hãy sử dụng tên cú pháp “int[]” thay vì “int array” hoặc “array<int>”. Đối với refs, sử dụng “int ref” thay vì “ref<int>” hoặc “Ref<int>”. Đối với tất cả loại khác, sử dụng các hình thức tiền tố: “HashSet<int>”, “Dictionary<string,int>”, vì đây phù hợp với tiêu chuẩn NET

Ngoài ra, bạn sẽ nhận được một cảnh báo trình biên dịch nếu bạn sử dụng ML-phong cách chung chung ký hiệu danh sách tham số, ví dụ ('a,'b) tt<'a,'b>.

Và trong khi chúng tôi đang ở đó, lưu ý các khuyến nghị sau đây trong Section 3.1 của hướng dẫn tương tự:

Đừng sử dụng PascalCase cho tên tham số chung trong các API công cộng, bao gồm cho F # -facing thư viện. Cụ thể, sử dụng các tên như T, U, T1, T2 cho các thông số chung tùy ý và khi tên cụ thể làm cho cảm giác , thì đối với các thư viện F # -facing, hãy sử dụng các tên như Khóa, Giá trị, Arg (nhưng không phải là TKey).

(mặc dù cá nhân tôi có xu hướng bỏ qua đề xuất này cho F # -facing thư viện công cộng).

3

Không có sự khác biệt nào cả, không chắc chắn đây có đáng để trả lời toàn bộ không! Tôi thích đặc biệt là trước đây khi nói đến nhiều loại tham số (là có thể với sau này?).

+1

Có, bạn làm '(chuỗi, phao) Hashtbl.t' trong OCaml. –

1

Tôi sẽ nói sự khác biệt là dễ đọc. Đối với một tham số, cú pháp ' không quá khó hiểu nhưng khi bạn nhận được một danh sách các cú pháp, việc đọc phiên bản khung góc trở nên dễ dàng hơn nhiều.

2

Tôi nghĩ rằng cú pháp 'a t là thành ngữ hơn (nó được sử dụng trong hầu hết tất cả các ví dụ MSDN và phát ra bởi trình biên dịch sẽ tạo ra rằng cú pháp cho các tập tin chữ ký)

Có một ví dụ tương tự đối với mảng

int[] , int array 

cú pháp 'a t là cũng đẹp hơn cho các thông số cụ thể -

int list, List<int> 

vì vậy một số tính nhất quán lập luận cho 'a t

Các vấn đề liên quan