Do Perl điều hành ưu tiên tuyên bố đã được phân tích cú pháp như sau:
($condition ? $a = 2 : $a) = 3 ;
Bởi vì: nhà điều hành sản xuất một kết quả có thể chuyển nhượng, 3 được gán cho là kết quả của tình trạng này.
Khi $ điều kiện là đúng điều này có nghĩa $ a = 2 = 3 hiến $ a = 3
Khi $ điều kiện là sai này có nghĩa là $ a = 3 hiến $ a = 3
Cách đúng để viết những dòng này là
$a = $condition ? 2 : 3;
Nói chung, bạn thực sự cần thoát ra khỏi thói quen sử dụng các điều kiện để làm bài tập, như trong ví dụ ban đầu - đó là loại điều đó dẫn đến Perl nhận được một danh tiếng cho là ghi -chỉ có.
Nguyên tắc chung là các điều kiện chỉ dành cho các giá trị đơn giản, không bao giờ có biểu thức có phản ứng phụ. Khi bạn hoặc người khác cần đọc mã này tám tháng kể từ bây giờ, bạn có muốn đọc nó như thế này không?
$x < 3 ? foo($x) : bar($y);
Hoặc như thế này?
if ($x < 3) {
$foo($x);
} else {
$bar($y);
}
"Khi $ điều kiện là đúng điều này có nghĩa $ a = 2 = 3 hiến $ a = 3" tôi sẽ phải suy nghĩ $ a = 2 = 3 sẽ là một lỗi cú pháp biểu hiện hoặc giá trị trái lỗi yêu cầu hoặc như vậy ... Nó được đánh giá như thế nào? – sundar
Bạn đúng Tôi sẽ sửa đổi nó là ($ a = 2) = 3 thay vì $ a = 2 = 3 – Pat