Tôi có tuyên bố if trong ứng dụng Rails của mình. Tôi cần phải làm một loại kiểm tra "nếu đúng và sai" cơ bản. Biểu thức được định nghĩa là:Ruby: Tại sao 'và không' hoạt động khi '&&! (Expr)' không?
ActiveRecord::Base.connection.tables.include? 'settings' && !Settings.setting_is_set?('defaults_set')
Nếu tôi đặt biểu thức đó làm nếu, nếu sẽ không kích hoạt. Nếu tôi chạy biểu thức đó trong giao diện điều khiển, tôi nhận được sai.
Bây giờ, nếu tôi sửa đổi biểu thức để đọc:
ActiveRecord::Base.connection.tables.include? 'settings' and not Settings.setting_is_set?('defaults_set')
Nó trả về true như nó phải, và thực hiện nó là khối.
Vì vậy, câu hỏi đặt ra là: Tại sao 'biểu hiện & &! Biểu thức' không hoạt động như 'biểu thức và không biểu thức'. Đó là sự hiểu biết của tôi & & và! nên tương ứng với và không gần như trực tiếp.
Tôi thiếu gì ở đây?
Nhiều khả năng điều này là do ưu tiên người vận hành. Tôi khá rõ ràng về điều này trong PHP và Python, nhưng không phải Ruby - hy vọng ai đó biết Ruby tốt hơn tôi sẽ đến và giải thích cách nó hoạt động trong Ruby. – JAL
Đây là bản sao chính xác của http://StackOverflow.Com/questions/2083112/ –