Tại sao nhà điều hành trận đấu thông minh của Perl 5 bị coi là hỏng? [đóng cửa]


17

Tôi đã thấy một số ý kiến ​​trên web của nhà điều hành kết hợp thông minh của Perl bị hỏng . Tôi biết ban đầu nó là một phần của Perl 6, sau đó được triển khai trong Perl 5.10 ngoài phiên bản cũ của thông số kỹ thuật, và sau đó được sửa lại trong 5.10.1 để phù hợp với thông số Perl 6 hiện tại.

Sự cố đã được khắc phục trong 5.10.1+ hay có vấn đề nào khác với toán tử kết hợp thông minh khiến nó gặp rắc rối trong thực tế không?

Vấn đề là gì?

Có phiên bản nào được cập nhật nhiều hơn (Perl 6, có lẽ) để khắc phục các sự cố không?

Chỉnh sửa: Để làm rõ, tôi không hỏi về lỗi, mà là ý kiến ​​cho rằng hành vi dự định ~~là xấu.


Điều này sẽ không tốt hơn trên SO?

3
Vì vậy, dường như ghét các câu hỏi không thể được trả lời bằng các đoạn mã ngày nay.
Sean McMillan

2
Tôi không nghĩ nó thuộc về SO, nó yêu cầu một lời giải thích khái niệm về lý do tại sao toán tử khớp thông minh của Perl bị coi là hỏng.
yannis

1
Từ những gì tôi thấy trong liên kết của bạn, có vẻ như kết hợp thông minh là (hoặc đã) đệ quy, vì vậy nó có thể dẫn đến đệ quy vô hạn chỉ vì một mảng (có thể gián tiếp) chứa tham chiếu đến chính nó.
user281377

2
@SeanMcMillan - SO ghét rất nhiều thứ trong những ngày này: /
Rook

Câu trả lời:


14

Mọi người thường nhầm lẫn các vấn đề phát sinh với toán tử smartmatch với các vấn đề phát sinh với given/whencấu trúc, chẳng hạn như vấn đề từ vựng $_.

Tôi đã có ý kiến ​​rằng nếu bạn chỉ sử dụng toán tử smartmatch trên chữ, thì bạn sẽ không phát điên. Tôi không thể hứa hẹn về bất kỳ tình huống nào khác. Cố gắng tìm hiểu những gì $a ~~ $bđang làm là đủ để khiến bất kỳ con người tử tế nào chạy đến la hét trong điên loạn, và hoàn toàn chiếm lĩnh một ngôn ngữ lập trình khác.

Hoặc ít nhất, đó là sự nhận được từ Larry khi anh ấy đang chỉnh sửa phần smartmatch của phiên bản thứ 4 của Lập trình Perl .


4

Toán tử kết hợp thông minh không bị "hỏng" , nhưng nó có rất nhiều lỗi. Perl v5.12 đã sửa nó và Perl v5.14 đã hoàn thiện nó IMHO. Vì vậy, để trả lời câu hỏi của bạn, Perl v5.12 trở lên khắc phục vấn đề này. Bạn có thể dùng thử với các phiên bản sau của Perl v5.10, nhưng tôi biết nó hoạt động tốt hơn trong Perl 5.12+.

Chỉnh sửa: Để trả lời chỉnh sửa của bạn, xem blog này . Sau khi đọc bài viết, tôi tin rằng nó đã trả lời đầy đủ câu hỏi của bạn.

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.