Đối với các loại biến số khác, tôi sử dụng ||=
, nhưng điều này không hoạt động đối với các phép toán (x ||= true
gán x thành true ngay cả khi x đã được gán cho sai).Làm cách nào để bạn đặt giá trị mặc định boolean trong Ruby?
tôi nghĩ rằng điều này sẽ làm việc:
x = true unless defined?(x)
Nhưng nó không: nó gán x để nil đối với một số lý do. (Giải thích về đây sẽ được đánh giá.)
tôi biết một phương pháp mà làm việc:
unless defined?(x)
x = true
end
Nhưng nó khá dài dòng. Có cách nào ngắn gọn hơn để gán giá trị mặc định cho các biến boolean trong Ruby không?
là có một lý do tại sao bạn không muốn x được gán để nil (tương đương với giả cho tất cả các ý định và mục đích)? –
@ sylvain.joyeux Bởi vì anh ta muốn nó là "đúng", không phải là falsey. –
@ sylvain.joyeux Sử dụng nil thay vì false là tốt, nhưng nó không giải quyết được sự cố với '|| ='. Nếu bạn cố gắng gán một giá trị mặc định cho x bằng cách sử dụng '|| =', và x trước đó được gán cho nil, nó sẽ bị ghi đè thay vì giữ lại giá trị của nil (vì nil là falsey). – evanrmurphy