Có cuộc gọi chức năng một dòng thoát khỏi chương trình và hiển thị thông báo không? Tôi biết trong Perl nó đơn giản như:Cách tạo thông báo thoát
die("Message goes here")
tôi mệt mỏi gõ này:
puts "Message goes here"
exit
Có cuộc gọi chức năng một dòng thoát khỏi chương trình và hiển thị thông báo không? Tôi biết trong Perl nó đơn giản như:Cách tạo thông báo thoát
die("Message goes here")
tôi mệt mỏi gõ này:
puts "Message goes here"
exit
Chức năng abort
thực hiện việc này. Ví dụ:
abort("Message goes here")
Lưu ý: thông điệp abort
sẽ được ghi vào STDERR
như trái ngược với puts
mà sẽ viết thư cho STDOUT
.
Wow! Nice tìm! Quá xấu họ không chỉ quá tải thoát với chức năng này .... –
Lưu ý, hủy bỏ thoát khỏi chương trình với một trạng thái sai đại diện cho một thất bại. thoát theo lối ra mặc định với trạng thái đúng là đại diện cho thành công. Hãy chắc chắn rằng bạn sử dụng một trong những quyền cho tình hình. –
lại. Lời nhận xét của Mike Stone, đôi khi có vẻ như Ruby được viết bởi một nhóm những người không liên lạc với nhau, đúng không? (Tuy nhiên, nó rất dễ dàng để lập trình trong đó.) – JellicleCat
Tôi chưa bao giờ nghe nói về một chức năng như vậy, nhưng nó sẽ là đủ tầm thường để thực hiện. ..
def die(msg)
puts msg
exit
end
Sau đó, nếu điều này được xác định trong một số tệp .rb mà bạn bao gồm trong tất cả các tập lệnh, bạn vàng .... chỉ vì nó không được xây dựng trong không có nghĩa là bạn không thể làm nó cho mình ;-)
Tắt chức năng 'hủy bỏ' (xem câu trả lời của tôi dưới đây) –
Tại sao phải viết mã khi chức năng hủy bỏ thực hiện điều đó cho bạn? –
@ChrisBunch Đây là ** không ** giống như chức năng hủy bỏ: 'thoát' mặc định trở lại như thể nó đã thành công. 'abort' trả về lỗi. 'exit 1' cũng sẽ trả về lỗi. – TemporalWolf
Nếu bạn muốn biểu thị một lỗi thực tế trong mã của bạn, bạn có thể nâng cao một ngoại lệ RuntimeError
:
raise RuntimeError, 'Message goes here'
này sẽ in một stacktrace, loại trừ được nâng lên và thông điệp mà bạn cung cấp. Tùy thuộc vào người dùng của bạn, một stacktrace có thể là quá đáng sợ, và tin nhắn thực tế có thể bị mất trong tiếng ồn. Mặt khác, nếu bạn chết vì một lỗi thực tế, một stacktrace sẽ cung cấp cho bạn thông tin bổ sung để gỡ lỗi.
Bạn không cần phải đề cập đến RuntimeError để nâng cao một (đó là loại ngoại lệ mặc định được nâng lên) để mã sau đây đủ: tăng 'Message goes here' – sunaku
sunaku - trong khi nhận xét của bạn là hoàn toàn hợp lệ, tôi thường thấy rằng rõ ràng hơn có thể hữu ích, đặc biệt đối với những người khác đọc mã sau. – shevy
Tôi đã tìm kiếm một cách để thực thi một số mã bất cứ khi nào chương trình kết thúc.
Found this:
Kernel.at_exit { puts "sayonara" }
# do whatever
# [...]
# call #exit or #abort or just let the program end
# calling #exit! will skip the call
gọi nhiều lần sẽ đăng ký nhiều bộ xử lý.
Một chú thích nhỏ, 'puts' của bạn viết thành stdout, trong khi' die' viết thành stderr, do đó: '$ stderr.puts" Thông báo xuất hiện ở đây "'. – cdarke
Tôi biết rằng đây không phải là câu trả lời, nhưng nó trả lời câu hỏi của tôi, cảm ơn – Patrick
Chỉ để tham khảo, trong Python nó là 'sys.exit (" Message go to stderr ")'. –