Nhiều lần tôi nghe nói rằng F # không phù hợp với các tác vụ cụ thể, chẳng hạn như giao diện người dùng. "Sử dụng đúng công cụ" là một cụm từ phổ biến.F # thiếu cho OO hoặc bắt buộc là gì?
Ngoài các công cụ còn thiếu như trình thiết kế WinForms/WPF/ORM, tôi không chắc chính xác những gì bị thiếu trong F # - thành thật! Tuy nhiên, đặc biệt là với giao diện người dùng, tôi đã nói rằng C# chỉ làm tốt hơn. Vì vậy, sự khác biệt thực sự và thiếu sót trong F # khi sử dụng nó là gì?
Dưới đây là danh sách tôi đã đưa ra:
Rất nhiều công cụ hỗ trợ còn thiếu
F # là vẫn beta
nhà phát triển của bạn không biết F #
- Tôi không muốn xem xét những điểm đó vì chúng thực sự không thực sự là F #
Cần vô hiệu hóa "có thể thay đổi" hoặc cần ref, ref needs! để dereference
Mutables gán với < - và ref sử dụng: = (họ đang cả hai nhân vật 1 nhiều hơn chỉ =)
val cần DefaultValueAttribute để có được một giá trị mặc định
F # doesn' t phát ra giao diện ngầm
thành viên protected có thể được khó khăn hơn để đối phó với
Không tính tự động
thực hiện các thành viên ảo trên lớp trừu tượng đòi hỏi hai định nghĩa
Báo giá-to-LINQ-Biểu-Trees sản xuất cây hơi khác so với C#/VB (gây phiền nhiễu cho API mong đợi Expressions của họ trong một định dạng cụ thể)
không stackalloc
F # không có: nhà điều hành có điều kiện
Pointer s có thể được coi là cồng kềnh hơn trong F #
đại biểu/sự kiện có thể có thể được coi là cồng kềnh hơn (tôi muốn tranh luận họ dễ dàng hơn, nhưng ít nhất họ khác nhau)
Không có chuyển đổi kiểu tự động (như int to float, hoặc implicit casts)
Không hỗ trợ cú pháp đặc biệt cho Nullable (C# 's? nhập chú thích và ?? toán tử, cũng như sử dụng toán tử trên nullables.)
Không upcasting tự động tới lớp cơ sở chung hoặc đấm bốc (ví dụ: cho x: obj = nếu đúng thì 1 khác "hi" // này sẽ không typecheck)
giá trị không thể bị loại bỏ mà không có một cảnh báo ("bỏ qua" để có được xung quanh nó)
không có cú pháp C-style :)
với câu hỏi: nào sau đây là một trở ngại cho việc viết mã bắt buộc hay OO ? Tại sao (ví dụ ngắn)? Tôi đã bỏ lỡ cái nào? Cách giải quyết tốt nhất là gì và tại sao họ không đủ?
Xin lưu ý, tôi không nói về cách viết cái gọi là F # thành ngữ, và tôi chắc chắn không nói về lập trình hàm. Tôi quan tâm hơn đến các dòng "Nếu tôi buộc mình viết UI hoặc mã OO bắt buộc trong F #, sử dụng các tính năng bắt buộc và loại lớp F # OO, điều gì gây đau nhất?"
Bonus Nếu bạn không biết F # nhưng sử dụng C# hoặc VB.NET và nghĩ rằng nó là một công cụ tốt hơn cho một số trường hợp, xin cho biết các tính năng ngôn ngữ cụ thể và cú pháp bạn tìm thấy hấp dẫn.
Có vẻ như bạn muốn F # thành C# hoặc VB. Bạn sẽ lãng phí rất nhiều thời gian viết theo một phong cách bắt buộc. – leppie
Xin vui lòng không làm cho tôi sai. Nhiều thứ trong danh sách tôi yêu thích Tôi nghĩ rằng chúng là tích cực. Không, tôi quan tâm đến những khác biệt mà C# và VB.NET chia sẻ để làm cho chúng tốt hơn trong các tác vụ như vậy. Không nói chung "oh nó không phải là _designed_ cho rằng", nhưng khó "thiếu các thành viên được bảo vệ có nghĩa là F # không thể đối phó trên x y và z khuôn khổ". – MichaelGG
Nhà thiết kế không phải là một vấn đề lớn, vì bạn có thể sử dụng dll của người khác. Nói chung chỉ là một vấn đề trong các dự án nhỏ. – Dykam