J'ai toujours cherché quelque chose comme de Python tandis que la structure de Python dans Ruby pour améliorer mon code.
Cela signifie que la boucle est exécutée et si la condition de la boucle n'a pas été vraie à tout moment, alors Il renvoie la valeur dans la déclaration d'autre. P>
dans Ruby, je peux faire comme ça: p> y a-t-il un moyen d'améliorer cela? < / p> Merci d'avance. p> p>
4 Réponses :
hm, vous pouvez l'écrire comme ternaire: Vous pouvez faire quelque chose de plus utile dans votre bloc, car mise à jour selon votre commentaire: Je suppose que le plus proche que vous puissiez obtenir est quelque chose comme p> chaque code> est exécuté pour son effets secondaires et renvoie le récepteur d'origine. p>
Je n'aime pas beaucoup sur une ligne. Ce n'est pas plus clair. Ce que je veux, c'est plutôt quelque chose comme tandis que / autre / fin. Peut-être que ce n'est pas possible mais je pense que la question en vaut la peine.
J'ai regardé le de Python tandis que / else code> maintenant, @zabba a raison, le plus proche est probablement un sauf si..elez code> si vous n'aimez pas la forme ternaire. IMHO, il n'a pas de sens d'essayer de traduire chaque construct d'une langue à une autre cependant, mais YMMV.
Je n'essayais pas de traduire toute la langue mais je pense que cette structure dans Python est vraiment utile. Merci pour votre réponse :)
N'oubliez pas que le bloc d'itérateur renvoie ce que vous avez mis dans celui-ci, ce qui peut être testé pour une utilisation ultérieure.
if arr.each do |item| item.some_action(some_arg) end.empty? else_condition_here end
Ceci est hideusement génial.
une manière plus ou moins fonctionnelle:
Depuis que nous sommes à Ruby, amusons-nous. Ruby a puissant mais pour faire fonctionner le code ci-dessus, nous devons modifier la classe natale Ce code surcharge le fonctionnaire Unary moins ( construction code>, qui pourrait être utilisé tel que ceci: Symbole code> d'abord. La modification des classes natales est la spécialité rubis. Cela doit être fait une seule fois, typiquement dans une bibliothèque (GEM), et cela vous aide avec jamais. Dans ce cas, la modification sera la suivante: p> - code>) de symbole code> classe de cette manière, qui dit -: sym code> renvoie un nouveau singe d'objet vide corrigé avec : === code>, utilisé dans les coulisses de la déclaration de cas. < / p> p>