Utilisation idiomatique des parenthèses dans Ruby
array.include? 'foo' or array.include? 'bar'
est une erreur de syntaxe (inattendu keyword_or). Entre parenthèses résoudre le problème, mais comme je suis nouveau à Ruby que j'ai aucune idée de ce qui est le plus considéré idiomatiques:
Option 1
array.include?('foo') or array.include?('bar')
Option 2
(array.include? 'foo') or (array.include? 'bar')
Est-ce à descendre à la préférence personnelle, ou est une approche plus "correct"?
source d'informationauteur davidchambers
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de prendre un coup d'oeil à la piloté par la communauté Ruby style de codage guideici en particulier la section sur les La syntaxe.
Omettre les parenthèses autour des paramètres pour les méthodes qui font partie d'un DSL interne (par exemple, des commissions, des Rails, RSpec), les méthodes qui sont avec un "mot clé" état de Ruby (par exemple attr_reader, met) et l'attribut méthodes d'accès. Utilisez des parenthèses autour des arguments de toutes les autres invocations de méthode. - extrait du guide
Êtes-vous sûr que c'est en train d'échouer? Votre premier exemple fonctionne très bien pour moi.
Comme une question de fait, si quelque chose pouvait être considéré comme idiomatiques ce serait celui-là. La faible priorité de
or
permet de travailler quand vous le laissez parens off. Cette caractéristique est quelque chose qui devrait en faire idiomatique Ruby (et même de Perl, quior
est un hold-dessus de).L'Option 1 est super clair, mais en considérant que vous avez inclus les parens vous n'avez vraiment pas besoin d'utiliser
or
. Il est probablement préférable d'utiliser ||, qui a une haute priorité à l'instar des autres opérateurs et est un peu plus commun. Je pense que l'utilisationor
pour l'amour d'elle à la recherche comme l'anglais n'est pas une grande pratique. Il a une signification sémantique dans la langue et il est probablement mieux utilisé pour ces qualités-là.L'Option 2 est stupide, bien sûr. Si vous allez inclure les parenthèses, vous pourriez aussi bien les utiliser pour la signature de la méthode.
Espère que cette aide.
L'Option 1 est préféré puisqu'il est commun à d'autres langues. Option 2 ressemble à LISP, ce qui n'est pas populaire de nos jours.
Avdi Grimm estime vous ne devriez pas utilisation
and
ouor
de la logique booléenne. Vous ne devriezand
ouor
pour le contrôle de flux (analogue àif
ouunless
)Conformément à sa recommandation, vous devez utiliser
||
à la place: