Là một tùy chọn / Có thể loại hữu ích trong các ngôn ngữ động?


14

Optionallà hữu ích theo một cách rõ ràng trong một ngôn ngữ gõ tĩnh, nhưng tôi tự hỏi nếu nó cũng hữu ích trong các ngôn ngữ động. Thông thường không có trình biên dịch nào nói với bạn, "này, bạn đã sử dụng nó Optional<String>như một String", vì vậy bạn vẫn phải phát hiện ra lỗi của mình khi chạy. Tôi có một nền tảng gõ tĩnh và từ quan điểm của tôi, tôi không thể thấy lợi ích của một Optionalloại trong một ngôn ngữ động.

Câu trả lời:


13

Điểm yếu đó thực sự không khác gì so với tất cả các loại trong ngôn ngữ động. Bạn phải chạy nó để tìm hiểu những gì trong đó. Tùy chọn không thực sự khác nhau về vấn đề đó.

Các tùy chọn không chỉ là một chú thích tĩnh mà một giá trị có thể có hoặc không có. Họ có hoạt động liên quan đến họ là tốt. Chuỗi các thao tác được ánh xạ trên các tùy chọn là một tính năng rất hữu ích, giúp bạn không phải kiểm tra lỗi sau mỗi bước trong chuỗi.

Ngay cả khi bạn chỉ lấy ngay giá trị, nó vẫn sẽ lập trình viên kiểm tra Nothinglần đầu tiên nó chạy và thất bại. Nếu không có tùy chọn, prodding đó sẽ chỉ diễn ra nếu nó có chứa nulllần đầu tiên bạn chạy nó. Nhiều người vô dụng con trỏ null đã ngoan cố chờ đợi cho đến khi sản phẩm được đưa vào hiện trường.


0

Tôi có thể nói chuyện với Objective-C.

Vì các ngôn ngữ được nhập động liên kết muộn, việc kiểm tra "tùy chọn" (không có giá trị được biểu thị bằng nil) là cố hữu: Nếu bạn kiểm tra loại trong thời gian chạy, bạn sẽ kiểm tra nilngầm. Tất nhiên đây là chuỗi. Điều này vốn được thực hiện, quá.

Đối với các ngôn ngữ gõ tĩnh, khái niệm bổ sung này là một lợi ích, bởi vì chúng phải đưa ra quyết định loại vào thời gian biên dịch - một tình huống ngôn ngữ gõ động không bao giờ có.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.