2017-07-28 1 views
0

Je donne les résultats suivants par défaut à 5 s'il n'y a pas de valeur pour json_element['LIMIT']:comment utiliser ruby ​​pour affecter un défaut si une valeur est nulle?

json_element['LIMIT'] = 500 
limit   ||= json_element['LIMIT'].to_i 
limit   ||= 5 

Ceci est l'implémentation actuelle, mais il semble que l'une ligne trop longue.

+2

L'inverse: 'var = value || default_value' (c'est-à-dire 'limit = json_element ['LIMIT'] &. presence || 5'). Notez que vous ne devriez l'utiliser que si 'value' ne peut légitimement être' false' ou 'nil'. – Amadan

+0

Limite peut être nulle dans quel cas je veux la valeur par défaut 5. Et oui la valeur ne peut pas être nilll – Angela

Répondre

2

Comme Amndan dit, l'idée est ici que vous l'ordre des choses dans l'ordre de priorité, le plus haut au plus bas, de gauche à droite, si d'une manière générale:

def do_thing(limit_override) 
    limit ||= limit_override || input || DEFAULT 
end 

Dans votre cas, vous testez une propriété Hash et convertir en entier, vous avez des options:

limit ||= json_element['LIMIT'] ? json_element['LIMIT'].to_i : 5 

Ou tout simplement ce que vous obtenez to_i même si elle est très légèrement moins efficace:

limit ||= (json_element['LIMIT'] || 5).to_i 
+1

Alternativement, vous pouvez également utiliser ['fetch'] (https://ruby-doc.org/core/Hash.html# method-i-fetch) comme ceci: 'limit || = json_element.fetch ('LIMIT', 5) .to_i'. –

+0

Je ne suis pas vraiment l'exemple fetch. Limite et 5 sont les deux paramètres dans la fonction d'extraction? – Angela

+0

Comme dans la documentation liée, 'key' et' default' sont des arguments, oui. L'argument 'default' peut être omis, auquel cas c'est' nil'. – tadman