Lorsque la variable est «nil», certaines méthodes peuvent provoquer une erreur.
Par exemple, si vous utilisez ʻeach pour transformer une liste de valeurs emballées dans un tableau pour un certain traitement, et si
nil` est inclus, le traitement s'arrêtera et une erreur se produira. .. Ce serait un problème si quelque chose arrivait.
Dans un tel cas, vous pouvez éviter nil
en faisant next if [variable] .nil?
Avec ** clause de garde ** (une méthode d'implémentation pour supprimer l'exception au début de la fonction ou du processus itératif). Oui, mais j'aimerais faire une remarque lorsqu'il existe une autre méthode qui applique des opérateurs logiques.
Tout d'abord, à partir de la conclusion, écrivez sous la forme «[objet] &. [Méthode]».
Par exemple
# Sans pour autant &
ary = [[1,2,3],nil,[5,6]]
ary.each do |element_ary|
p element_ary.length
end
=>
3
Traceback (most recent call last):
2: from test.rb:3:in `<main>'
1: from test.rb:3:in `each'
test.rb:4:in `block in <main>': undefined method `length' for #nil:NilClass (NoMethodError)
# Avec &
ary = [[1,2,3],nil,[5,6]]
ary.each do |element_ary|
puts element_ary&.length
end
=>
3
nil
2
De cette façon, il n'y a aucune erreur.
En fait, cela implique l'opérateur logique «&&».
En général, les opérateurs logiques ont les caractéristiques suivantes:
・ Évalué dans l'ordre de la gauche ・ Une fois que la vérité de l'expression logique est déterminée, les expressions restantes ne sont pas évaluées. -La valeur de la dernière expression évaluée devient la valeur de toute la logique
Autrement dit, lorsque «[Condition 1] && [Condition 2]» est trouvée, «[Condition 2]» n'est évaluée que lorsque «[Condition 1]» est vraie. En effet, si «[Condition 1]» est «nil» ou «false», le résultat de l'opérateur logique «&&» sera «nil» ou «false» sans évaluer la condition 2.
En appliquant ceci et en expliquant en utilisant l'exemple ci-dessus, il peut être écrit comme suit.
ary = [[1,2,3],nil,[5,6]]
ary.each do |element_ary|
p element_ary && element_ary.length
end
Lorsque «nil» est entré dans «élément_ary», le traitement de l'opérateur logique se termine au moment de «[condition 1]» et renvoie «nil», donc «nil» est ajouté à la méthode «length» de «[condition 2]». Ne traversera pas.
Il a été appelé l'opérateur de référence de sécurité qui pouvait être exprimé en omettant ceci et en ajoutant `` & '' après l'objet comme indiqué ci-dessous.
ary = [[1,2,3],nil,[5,6]]
ary.each do |element_ary|
p element_ary&.length
end
C'était un exemple d'application d'un opérateur logique, mais j'ai trouvé ça sympa.
Recommended Posts