Mon code ressemble à ceci, et cela fonctionne:capture true/false résultat d'une opération
if Target.find_by_shrunk(params[:shrunk])
@target = Target.find_by_shrunk(params[:shrunk])
else
# do something else
end
Target::find_by_shrunk(params[:shrunk])
est appelé deux fois. Afin d'éviter cela, je veux exécuter Target.find_by_shrunk(params[:shrunk])
une fois, attraper le résultat true
/false
, puis utiliser cette variable dans l'instruction conditionnelle. J'ai essayé de faire ceci:
does_it_exist = (this_target = Target.find_by_shrunk(params[:shrunk]))
if does_it_exist
@target = this_target
else
# do something else
end
Mais malheureusement cela ne fait pas ce que je veux.
Comment puis-je simultanément effectuer une affectation et saisir le résultat vrai/faux de l'exécution de cette affectation de sorte que je n'ai pas à exécuter deux fois de suite le même élément de code (cher)?
bizarre, le second morceau de code devrait fonctionner. Vous pouvez l'écrire un peu plus propre mais devrait fonctionner. – robertodecurnex
Dans votre deuxième code, l'affectation à 'does_it_exist' est redondante. C'est exactement la même chose que 'this_target'. – sawa
Il est tout à fait possible que j'ai eu l'idée juste et fait une sorte d'erreur de syntaxe ailleurs qui l'a fait casser. Après l'avoir réécrit pour ressembler à la réponse de Ricardo Panaggio, ça a marché. Comme je l'ai dit, je suis un peu un ruby noob, donc je pense qu'il est tout à fait possible que j'avais fait quelque chose de mal ailleurs qui l'a cassé. – Joshua