J'ai une instruction if dans mon application Rails. Je dois faire une sorte de vérification de base "si vrai et! Faux". L'expression est définie comme:Ruby: Pourquoi 'and not' fonctionne-t-il quand '&&! (Expr)' ne fonctionne pas?
ActiveRecord::Base.connection.tables.include? 'settings' && !Settings.setting_is_set?('defaults_set')
Si je mets que mon expression à un si, le cas ne se déclenche pas. Si je cours cette expression dans la console, je deviens faux.
Maintenant, si je modifie l'expression comme suit:
ActiveRecord::Base.connection.tables.include? 'settings' and not Settings.setting_is_set?('defaults_set')
Il retourne vrai comme il se doit, et l'exécute est bloc.
Donc la question est: Pourquoi est 'expression & &! Expression' ne se comporte pas comme 'expression et non expression'. C'est ma compréhension & & et! devrait correspondre à et et pas presque directement.
Qu'est-ce qui me manque ici?
Il est plus que probable que cela soit dû à la priorité de l'opérateur. Je suis assez clair à ce sujet en PHP et Python, mais pas Ruby - j'espère que quelqu'un qui connaît mieux Ruby que moi viendra et expliquera comment cela fonctionne dans Ruby. – JAL
Ceci est une copie exacte de http://StackOverflow.Com/questions/2083112/ –