Tôi nhận thấy rằng Addable
không còn được dùng nữa, trong khi Subtractable
thì không. Có gì sai với Addable
và tại sao là Subtractable
khác nhau?Tại sao tính năng Addable của Scala bị phản đối?
Trả lời
Sự cố là +
bị quá tải để ghép nối String
thành không dây. Vì vậy, bất cứ khi nào bạn sử dụng phương thức +
trên một loại không có nó, bạn sẽ nhận được một thông báo lỗi không liên quan đến vấn đề thực sự: rằng loại bạn có không phải là loại bạn mong đợi.
Có +:
và :+
để thay thế.
Mở rộng câu trả lời của Daniel, +
cũng là một toán tử rất xấu để sử dụng để chèn bộ sưu tập. Về mặt toán học, toán tử +
có ý nghĩa rất thông thường và một phần ý nghĩa đó là sự đảm bảo về tính kết hợp. Thật không may, sự kết hợp là một sự đảm bảo không có ý nghĩa gì cả khi bạn thêm một số Int
vào một Vector[Int]
. Như vậy, +
luôn luôn là một nhà điều hành rất khó hiểu đối với bất kỳ ai có bất kỳ khóa đào tạo đại số nào.
+:
và :+
là cấp trên theo một số cách, không phải là ít nhất là không có sự mong đợi về tính kết hợp. Trên thực tế, sự bất đối xứng của các toán tử ngụ ý không phải là - tính tương tác, chính xác là ngữ nghĩa của chúng. Ngoài ra +:
và :+
phản chiếu nhau rất độc đáo, và +:
là kết hợp phù hợp, tất cả đều âm mưu cung cấp một API rất tự nhiên cho việc thu thập và thêm vào bộ sưu tập tương ứng.
- 1. Scala: tại sao loại bỏ bị phản đối vì lợi ích của bộ lọcNot?
- 2. Tại sao mẫu người quan sát bị phản đối?
- 3. Split() bị phản đối
- 4. Thuộc tính Java có bị phản đối hiệu quả không?
- 5. Tại sao chức năng ảo bị ẩn?
- 6. rất nhiều chức năng đang bị phản đối - iOs 6
- 7. Tại sao tính năng Stopwatch.Frequency của tôi quá thấp?
- 8. Tại sao Perl phàn nàn "Việc sử dụng phân tách ngầm cho @_ bị phản đối"?
- 9. Tại sao các loại nguyên thủy như Int bị xóa đối tượng trong Scala?
- 10. Tại sao scala sử dụng phản xạ để gọi phương thức trên kiểu cấu trúc?
- 11. Tại sao đối số của hàm không phản đối một mảng trong Javascript?
- 12. isOrientationSupported bị phản đối trong IOS
- 13. Tại sao System.nanoTime() của tôi bị hỏng?
- 14. Các tính năng tốt nhất của Scala là gì?
- 15. Tính năng nào của Scala không thể dịch sang Java?
- 16. Tại sao đặt chức năng?
- 17. Tính năng Mở rộng của Chrome bị hủy mỗi lần
- 18. Hash Rocket có bị phản đối không?
- 19. Tại sao TreeSet của Scala trả về SortedSet
- 20. Tính năng nào của Scala được thực thi bên trong bằng cách sử dụng sự phản chiếu?
- 21. Chuyển đổi năng động để phản đối
- 22. java.util.Timer: Nó có bị phản đối không?
- 23. Việc khôi phục có thể bị phản đối không?
- 24. Sử dụng phản xạ Scala với phản xạ Java
- 25. Tại sao chức năng random.choice() bị ngừng hoạt động?
- 26. Tại sao tính năng này hoạt động? Tham khảo đối tượng trong Javascript
- 27. phản ánh scala: getDeclaringTrait?
- 28. Tại sao mã Scala này chậm?
- 29. Tại sao tính năng này hoạt động (Mẫu, SFINAE). C++
- 30. Tại sao tính năng định kiểu này gây ra lỗi?
Câu hỏi này và câu trả lời của nó khiến tôi cảm thấy như tôi đã lang thang vào một câu lạc bộ Daniels riêng. –