Looking for ruby Keywords? Try Ask4Keywords

Ruby LanguageLes opérateurs


Remarques

Les opérateurs sont des méthodes

La plupart des opérateurs ne sont en fait que des méthodes, donc x + y appelle la méthode + de x avec l'argument y , qui serait écrit x.+(y) . Si vous écrivez une méthode qui a une signification sémantique pour un opérateur donné, vous pouvez implémenter votre variante dans la classe.

Comme un exemple stupide:

# A class that lets you operate on numbers by name.
class NamedInteger
  name_to_value = { 'one' => 1, 'two' => 2, ... }

  # define the plus method
  def + (left_addend, right_addend)
    name_to_value(left_addend) + name_to_value(right_addend)
  end

  ...
end

Quand utiliser && contre and , || vs or

Notez qu'il y a deux façons d'exprimer les booléens, soit && ou and , et || ou or - ils sont souvent interchangeables, mais pas toujours. Nous nous référerons à ceux-ci en tant que variantes "caractère" et "mot".

Les variantes de caractères ont une priorité plus élevée, ce qui évite les erreurs inattendues.

Les variantes de mot étaient à l'origine destinées aux opérateurs de flux de contrôle plutôt qu'aux opérateurs booléens. Autrement dit, ils ont été conçus pour être utilisés dans des instructions de méthode chaînées:

raise 'an error' and return

Bien qu'ils puissent être utilisés comme opérateurs booléens, leur priorité inférieure les rend imprévisibles.

Deuxièmement, beaucoup de rubyistes préfèrent la variante de caractère lors de la création d'une expression booléenne (celle qui est évaluée comme true ou false ) telle que x.nil? || x.empty? . En revanche, les variantes de mots sont préférables dans les cas où une série de méthodes sont en cours d’évaluation, et une autre peut échouer. Par exemple, un idiome commun utilisant la variante de mot pour les méthodes renvoyant nil en cas d'échec pourrait ressembler à ceci:

def deliver_email
  # If the first fails, try the backup, and if that works, all good
  deliver_by_primary or deliver_by_backup and return
  # error handling code
end

Les opérateurs Exemples Liés