7
votes

Comment vérifier le paramètre "param [: quelque_value]" dans Ruby

Je connais des moyens de vérifier si le paramètre n'est pas nul xxx

lequel est correct et le plus populaire? Quelle est la différence entre eux? Je préférerais utiliser si param [: quelque_value] car il est le plus simple et shorterst.


1 commentaires

Lequel est correct dépend de votre intention alors qu'est-ce que vous essayez spécifiquement de faire? Ces quatre ne sont pas équivalents, il y a des différences subtiles là-bas. Et parfois, vous pourriez dire que vous voulez dire param.has_key? : quelque_value .


4 Réponses :


1
votes

Cela dépend de ce que vous voulez faire, mais j'utilise généralement ces formulaires: xxx

bien sûr que tous ne fonctionnent que si le paramètre ne peut pas être faux . Dans ce cas, j'irais pour le sauf si Param [: quelque_value] .nil? version.


2 commentaires

Bien sûr, toutes ne fonctionnent que si le paramètre ne peut pas être faux . Ah bon? Je ne le savais pas. C'est-à-dire que si l'URL contient site.com/article/19.html?some_article=false puis si param [: Quelque_value] ne sera pas exécuté, non?


Non, Certains_article devrait être la chaîne "false" alors. Mais j'ai vu des gens à tourner cela en booléens et à le stocker dans parames` ...



15
votes

Voici quelques différences entre nil? , vide? et présent? : xxx

note que présent? traduit par pas nul et pas vide . Notez également que, tandis que nil? est fourni par RUBY, vide? et présents? Les aides sont fournis par des rails.

Alors, lequel choisir? Bien sûr, cela dépend de ce que vous voulez, mais lorsque vous évaluez les paramètres [: quelque_value], vous voudrez généralement vérifier non seulement que ce n'est pas nul, mais aussi s'il s'agit d'une chaîne vide. Ces deux sont couverts par présent? .


3 commentaires

Ensuite, quelle est la différence entre si param [: quelque_value] et si! Param [: quelque_value] .nil? ?


Si param [: Quelque_value] est FALSE , si la valeur renvoyée est nil ou false , ! Param [: Certain_value] .nil? D'autre part est FALSE Si et uniquement si ( iff ) param [: Quelque_value] Retours nil .


Juste pour noter, présent? traduit par non vide? . Blank? elle-même vérifie la nulle.



3
votes

Les cas pertinents sont:

  1. Le hachage manque de la clé (et de sa valeur)
  2. Le hachage a la valeur nil pour la clé
  3. Le hachage a la chaîne vide de valeur ( "" ") ou du tableau vide ( [] ) pour la clé
  4. Le hachage a une autre valeur pour la clé

    Selon l'endroit où vous souhaitez dessiner la ligne, utilisez la méthode appropriée.

    • 1 vs. 2, 3, 4: ! Param.key? (: Quelqu'un)
    • 1, 2 vs. 3, 4: param [: quelque_value] .nil?
    • 1, 2, 3 vs. 4: param [: quelque_value] .blank?
    • 2, 3, 4 vs. 1: param.key? (: Quelqu'un)
    • 3, 4 vs. 1, 2: param [: quelque_value]
    • 4 vs. 1, 2, 3: param [: quelque_value] .present?

0 commentaires

2
votes

si param [: elvalue] code> est le plus courant.

Mais si vous travaillez avec des données booléennes ( true code>, false code>) la meilleure méthode serait si! param [: quelque_value] .nil? code>, parce que: p> xxx pré>

( code> retourne le booléen Valeur, qui serait testée dans une instruction IF) p>

aussi, il pourrait être important de tester si la valeur est vraiment nulle ou si le combo de la valeur de clé n'est pas défini. clé? (clé) code> Est-ce que pour vous. P>

>> hash ={foo:nil}

>> hash[:foo]
=> nil
>> hash[:not_there]
=> nil

>> hash.key?(:foo)
=> true
>> hash.key?(:not_there)
=> false


0 commentaires