Tôi cũng nghĩ rằng các đoạn mã này có thể hoán đổi cho nhau. Nhưng bạn nên luôn luôn thích các biến rõ ràng cho phép thuật chuỗi toàn cầu.
Một trường hợp $!
diệu var là tiện dụng:
result_or_error = perform_some_operation() rescue $!
Đối với những người không biết rằng dòng này có nghĩa là:
Nó cái gọi là "inline giải cứu". Định dạng là:
<expr1> rescue <expr2>
Đầu tiên, expr1
được đánh giá. Nếu không có ngoại lệ nào được nêu ra, giá trị của nó sẽ được trả về. Nhưng nếu có ngoại lệ, thì expr2
được đánh giá và giá trị của nó được trả lại.
Vì vậy, trong trường hợp này, nếu perform_some_operation()
nêu ra một ngoại lệ, biến result_or_error
sẽ được đặt thành một trường hợp ngoại lệ đó (vì $!
trả về lỗi cuối cùng).
Nguồn
2013-05-19 17:56:05
Dưới đây là quá nhiều ['ví dụ'] (http://stackoverflow.com/search?q=inline+rescue) trừ trường hợp này. –