Comment puis-je vérifier le paramètre “param[:some_value]” en Ruby
Je sais que certaines façons de vérifier si le paramètre n'est pas nul,
if param[:some_value]
if param[:some_value].present?
if !param[:some_value].nil? #unless param[:some_value].nil?
if !param[:some_value].blank? #unless param[:some_value].blank?
Qui est correct et le plus populaire? Quelle est la différence entre eux?
Je préfère utiliser if param[:some_value]
parce que c'est plus simple et shorterst.
Lequel est correct dépend de votre intention si ce qui sont que vous essayez de faire? Ces quatre ne sont pas équivalents, il existe des différences subtiles. Et parfois, vous pouvez réellement dire
param.has_key? :some_value
.OriginalL'auteur Alexandre | 2012-08-19
Vous devez vous connecter pour publier un commentaire.
Voici quelques différences entre
nil?
,blank?
etpresent?
:Noter que
present?
se traduit parnot nil and not blank
. Notez également que toutnil?
est fourni par Ruby,blank?
etpresent?
sont des aides fournies par les Rails.Alors, lequel choisir? Cela dépend de ce que vous voulez, bien sûr, mais lors de l'évaluation des params[:some_value], vous voulez généralement à vérifier non seulement qu'il n'est pas nul, mais également si c'est une chaîne vide. Ces deux sont couverts par
present?
.if param[:some_value]
etif !param[:some_value].nil?
?if param[:some_value]
est false, si la valeur renvoyée estnil
oufalse
,!param[:some_value].nil?
sur l'autre main est false si et seulement si (forum)param[:some_value]
retournenil
.Juste pour remarque,
present?
se traduit parnot blank?
.blank?
se vérifie pour les nuls.Si présent? = (!vide?)
OriginalL'auteur Shailen Tuli
Les cas pertinents sont:
nil
pour la clé""
) ou le tableau vide ([]
) pour la cléSelon l'endroit où vous voulez dessiner la ligne, utilisez la méthode appropriée.
!param.key?(:some_value)
param[:some_value].nil?
param[:some_value].blank?
param.key?(:some_value)
param[:some_value]
param[:some_value].present?
OriginalL'auteur sawa
if param[:some_value]
est la plus commune.Mais si vous travaillez avec des données booléennes (
true
,false
) la meilleure méthodeserait
if !param[:some_value].nil?
, parce que:(
!!
retourne la valeur booléenne, qui serait dans un test if)En outre, il pourrait être important de tester si la valeur est vraiment nul, ou si la clé-valeur de la combo n'est pas défini.
key?(key)
fait pour vous.OriginalL'auteur robustus
Cela dépend de ce que vous voulez faire, mais j'ai généralement l'utilisation de ces formes:
Bien entendu, tous ne fonctionnent que si le paramètre ne peut pas être
false
. Dans ce cas, j'irais pour leunless param[:some_value].nil?
version.Of course all of them only work if the parameter can't be false
. Vraiment? Je ne le savais pas. C'est, si l'url contientsite.com/article/19.html?some_article=false
puisif param[:some_value]
ne sera pas exécutée, à droite?Non,
some_article
devrait être la chaîne"false" then. But I've seen people turn that into booleans and store it back in
params`...OriginalL'auteur Michael Kohl