2009-10-24 21 views
5

Tôi muốn đọc thêm một chút về + thường được đặt trước một hashref giúp phân biệt từ một khối mã.Lịch sử của dấu + ở phía trước của một hashref làm biến đổi từ một khối mã là gì?

  • Lần đầu tiên được giới thiệu khi nào?

  • Ai giới thiệu nó lần đầu tiên (khuyến nghị)?

  • Mọi người xử lý vấn đề như thế nào trước điều này đã được giới thiệu?

  • Bất kỳ câu đố hoặc ghi chú nào có trong đầu khi sử dụng cú pháp này?

+1

Đối với những người chưa gặp vấn đề cụ thể này, trang perlref (xem: http://perldoc.perl.org/5.8.8/perlref.html#Making-References) mô tả tình huống. – Tim

Trả lời

9

Trường hợp cụ thể của việc đánh dấu mã khối từ hàm băm hashref ẩn danh không được lớn hơn hàm tạo băm không xác định hashref, được thêm vào Perl 5.0 vào năm 1993-4. Trước đó vấn đề không tồn tại.

Nhưng "unary plus" đã tồn tại lâu hơn - vì ít nhất Perl 4 (nó không có trong Perl 1 nhưng nó có thể được thêm vào bất cứ lúc nào trong vài năm qua, theo như kiến ​​thức của tôi đi). Nó luôn luôn làm điều tương tự, buộc RHS của nó được đánh giá như một thuật ngữ chứ không phải là bất cứ điều gì khác mà có thể có ý nghĩa trong bối cảnh, và phân biệt, ví dụ:

print (1 + 2), 42; # Does nothing useful with 42! 

từ

print +(1 + 2), 42; # Prints 3 and 42. 
+1

Xem thêm http://stackoverflow.com/questions/1161763/why-arent-newlines-being-printed-in-this-perl-code –

+1

@FM bạn có thể làm rõ câu hỏi của mình không? Tình huống nào? –

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