Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Dừng chương trình Ruby sớm một cách nhẹ nhàng với phương thức exit

Làm thế nào để dừng chương trình Ruby sớm?

Bình thường một chương trình sẽ chạy cho đến khi xong xử lý tất cả các chỉ thị.

Hoặc cho đến khi nó raise một exception không được xử lý.

Nhưng nếu bạn đang viết một chương trình Ruby không cần chạy liên tục, bạn có thể muốn dừng chương trình sớm vì một lý do nào đó.

Bạn có thể làm điều này với phương thức exit.

Phương thức exit này hoạt động như thế nào?

Hãy nói về nó!

Các cách khác nhau để dừng chương trình

Khi bạn gọi exit, chương trình của bạn sẽ không dừng ngay lập tức.

Điều sau đây xảy ra:

Ruby raise một exception SystemExit cho phép các phần khác của chương trình dọn dẹp.

Bạn có thể chạy code này để xem demo:

begin
  exit
rescue SystemExit
  p 123
end

Điều này in 123 trước khi thoát.

Nếu bạn muốn chương trình bỏ qua quá trình dọn dẹp này, bạn có thể dùng exit!.

Ví dụ:

begin
  exit!
rescue SystemExit
  p 123
end

Chú ý rằng điều này sẽ không in 123 trước khi chương trình kết thúc.

Bạn cũng có thể dùng một phương thức khác.

Nó gọi là abort.

Với phương thức này, bạn có thể cung cấp thông báo lỗi.

Như sau:

abort "No Bacon Left"

Tương đương với:

warn "No Bacon Left!"
exit 1

Phương thức warn in thông báo lỗi ra standard error.

Nhưng 1 này là đối số cho exit là gì?

Đó là chủ đề thảo luận tiếp theo!

Hiểu về Status Codes (Mã trạng thái)

Khi một chương trình kết thúc, không chỉ chương trình Ruby mà BẤT KỲ chương trình nào, nó để lại một mã trạng thái.

Điều bạn cần biết:

  • Mã trạng thái 0 nghĩa là chương trình kết thúc bình thường
  • Các mã trạng thái khác (khác 0) dùng để báo hiệu điều kiện lỗi
  • Hiệu ứng của việc trả về mã trạng thái khác 0 phụ thuộc vào môi trường hiện tại của bạn

Điều này hữu ích vì hệ điều hành, hoặc các chương trình thông thường, có thể dùng mã trạng thái này để giám sát, ghi log và thậm chí tự động khởi động lại chương trình thất bại.

Trong Linux, bạn có thể dùng echo $? để biết mã trạng thái thoát của chương trình cuối cùng.

Quay lại Ruby:

Khi bạn gọi exit, mã trạng thái là 0 mặc định.

Bạn có thể truyền mã trạng thái khác làm đối số.

Đó là lý do khi bạn gọi abort, mã trạng thái được đặt thành 1, phương thức abort dùng để báo hiệu lỗi.

Dừng một vòng lặp (Stopping A Loop)

Nếu bạn không muốn dừng toàn bộ chương trình mà chỉ dừng một vòng lặp, bạn phải dùng thứ khác.

Bạn có thể dùng từ khóa break:

while 1 == 1
  break
end

Điều này cũng hoạt động bên trong block, không chỉ vòng lặp while.

Thoát khỏi một phương thức (Exiting A Method)

Phương thức Ruby kết thúc tự nhiên ở dòng code cuối cùng.

Nếu bạn muốn thoát sớm hơn…

Dùng từ khóa return.

Ví dụ:

def apples
  return "I had my two apples today"
  "bacon"
end

Code này không bao giờ đến "bacon" vì return sớm.

Thêm: Dừng vòng lặp vô tận (Bonus: Stopping An Infinite Loop)

Điều đó xảy ra.

Đôi khi bạn quên tăng bộ đếm và tạo ra vòng lặp vô tận.

Để làm chương trình dừng, bạn có thể nhấn tổ hợp phím:

CTRL+C

Tóm tắt

Bạn đã học về phương thức exit trong Ruby, phương thức abort, mã trạng thái thoát, và cách thoát khỏi vòng lặp.

Đừng quên chia sẻ bài viết này để nhiều người hơn có thể thưởng thức.

Cảm ơn bạn đã đọc! 🙂