Ruby Language Opérateur de navigation sécurisé


Exemple

Ruby 2.3.0 a ajouté l' opérateur de navigation sécurisé , &. . Cet opérateur est destiné à raccourcir le paradigme de l' object && object.property && object.property.method dans les instructions conditionnelles.

Par exemple, vous avez un objet House avec une propriété address et vous voulez trouver le street_name partir de l' address . Pour programmer cela en toute sécurité afin d’éviter les erreurs nuls dans les anciennes versions de Ruby, vous utiliseriez le code suivant:

if house && house.address && house.address.street_name
  house.address.street_name
end

L'opérateur de navigation sécurisé réduit cette condition. Au lieu de cela, vous pouvez écrire:

if house&.address&.street_name
  house.address.street_name
end

Mise en garde:
L'opérateur de navigation sécurisé n'a pas exactement le même comportement que le conditionnel chaîné. En utilisant le conditionnel chaîné (premier exemple), le bloc if ne serait pas exécuté si, par exemple, l' address était false . L'opérateur de navigation sécurisé ne reconnaît que des valeurs nil , mais autorise des valeurs telles que false . Si l' address est false , l'utilisation du SNO entraînera une erreur:

house&.address&.street_name
# => undefined method `address' for false:FalseClass