2013-03-21 18 views
8

Trong cuốn sách học ruby ​​cách cứng, tôi tìm thấy một cú pháp để thoát khỏi chương trình:Tại sao chúng ta chuyển 0 làm tham số để "thoát"?

Process.exit(0) 

Tại sao tham số 0 được thông qua trong phương pháp exit đây mặc dù nó hoạt động nếu tôi vượt qua khác số nguyên hoặc không vượt qua bất kỳ tham số nào? Ý nghĩa của 0 là gì?

+0

Tham số truyền cho thoát ra là (theo nghĩa thô) "giá trị trả về" của chương trình. –

+1

Như trong câu trả lời của @ kamituel, điều này thực sự là nhiều hơn về cách các kịch bản shell (hoặc ngôn ngữ lập trình khác) hoạt động hơn là về nội bộ của Ruby. – sawa

Trả lời

12

Đây là 'mã thoát'.

exit code này có ý nghĩa đặc biệt trong một số trường hợp (xem ví dụ http://tldp.org/LDP/abs/html/exitcodes.html)

Bạn có thể vượt qua bất cứ điều gì bạn muốn, nếu mã không bắt sau, điều này sẽ không có tác dụng.

Ở đây '0' dành cho 'Mọi thứ hoạt động tốt!'

+1

"0 là vì tôi không có gì đặc biệt để nói!". Tôi muốn nói "mọi thứ đều ổn". – tokland

+1

@tokland Chắc chắn, bạn nói đúng. Tôi sửa bài của tôi. – pierallard

6

Đó là vì khi quá trình con được bắt đầu (quá trình con là tập lệnh Ruby của bạn trong trường hợp đó), tiến trình cha (shell, hệ thống, v.v.) có thể đợi nó kết thúc.

Sau khi hoàn tất, nó có thể cho biết quy trình cha mẹ là trạng thái của việc thực thi. Zero thường có nghĩa là việc thực thi đã thành công và hoàn thành mà không có bất kỳ lỗi nào.

Nếu bạn, trên ví dụ, chạy script của bạn từ vỏ bash, và nó sẽ gọi Process.exit(0), bạn có thể kiểm tra xem nó đã thành công sử dụng $? biến:

$ ./my_ruby.script  # calls Process.exit(0) 
$ echo $? 
0       # ok, script finished with no errors. 
Các vấn đề liên quan