thể trùng lặp:
Ruby $stdout vs. STDOUT
là STDERR
thường ưa thích hơn sử dụng $stderr
, hoặc ngược lại?
Còn khoảng STDOUT
và $stdout
thì sao?
thể trùng lặp:
Ruby $stdout vs. STDOUT
là STDERR
thường ưa thích hơn sử dụng $stderr
, hoặc ngược lại?
Còn khoảng STDOUT
và $stdout
thì sao?
Ngược lại, việc sử dụng $stderr
là thích hợp hơn.
Lý do cho điều đó là $stderr
dưới dạng biến toàn cầu có thể được gán lại, trong khi STDERR
làm hằng số không nên được gán lại (nó làm tăng cảnh báo).
Thông thường cả hai đều trỏ đến cùng một tệp lỗi chuẩn, nhưng trong một số trường hợp, bạn có thể tạm thời chuyển hướng tất cả đầu ra của bạn ở nơi khác (ví dụ: tới tệp nhật ký hoặc vào bộ đệm chuỗi). chỉ cần gán lại $stderr
và tất cả mã của bạn sẽ tôn trọng điều đó (nếu bạn đủ thông minh để sử dụng $stderr
thay vì STDERR
ở nơi đầu tiên).
Mặc dù tôi không biết liệu các hàm bên trong có sử dụng 'STDERR' hoặc' $ stderr hay không '. Bạn có thể phải thực hiện tất cả các bài viết và đọc một cách rõ ràng, tại thời điểm đó bạn nên sử dụng một biến số chuyên dụng khác. – Linuxios
@Linux: "Chức năng nội bộ" nào sẽ ghi vào stderr? Điều duy nhất nảy ra trong tâm trí tôi là những cảnh báo mà bạn có thể tiêu diệt bằng cách sửa chữa chúng. –
Xin lỗi. Tôi có nghĩa là 'STDOUT' và' $ stdout' liên quan đến 'puts' và' gets'. Rất tiếc. – Linuxios
Tôi nghĩ câu hỏi của bạn đã được trả lời ở nơi khác: http://stackoverflow.com/questions/6671716/ruby-stdout-vs-stdout –