Quelqu'un peut-il m'expliquer la différence entre if
y unless
et quand l'utiliser ?
Pour une raison quelconque, je trouve incroyablement déroutant de lire unless
déclarations. Quelqu'un d'autre est-il dans la même situation ?
Quelqu'un peut-il m'expliquer la différence entre if
y unless
et quand l'utiliser ?
unless
est juste une négation de if
. C'est-à-dire qu'il exécute ce qu'il contient si la condition est no vrai.
unless foo?
# blabla
end
Cela signifie simplement
if !foo?
# blabla
end
Tout est une question de ce que vous trouvez plus facile à lire, vraiment.
Voir aussi : A moins que, l'abus de Ruby Conditionnel
L'utilisation de "à moins que" me paraît simple lorsqu'il n'y a qu'un seul argument, mais je la trouve déroutante lorsqu'il y en a plusieurs. Et lorsque vous utilisez ||
au lieu de &&
.
"A moins que ceci ou cela" est juste plus difficile pour mon cerveau. "si pas ceci et pas cela" est plus facile.
Il sera plus difficile de maintenir ce code à l'avenir si je l'utilise. Donc je ne le fais pas.
La différence entre if
y unless
c'est qu'ils sont exactement l'opposé l'un de l'autre :
if
prend une condition, un bloc then et un bloc else facultatif, et évalue le bloc then si la condition est vraie, sinon il évalue le bloc else.unless
prend une condition, un then-block et un else-block optionnel, et évalue le then-block si la condition est falsy, sinon il évalue le else-blockOu, en d'autres termes : ils signifient à peu près la même chose en Ruby qu'en anglais.
En tant que développeur de ruby on rails, il est préférable de suivre les meilleures pratiques pour maintenir la lisibilité du code. Ma réponse n'est pas directement liée à cette question mais elle pourrait aider quelqu'un, Essayez d'utiliser if
autant que possible au lieu de unless
Par exemple, au lieu de unless comments.empty?
il est préférable d'utiliser if comments.present?
au lieu de unless comments.present?
essayez d'utiliser if comments.blank?
, blank?
vérifie à la fois empty
y nil
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
unless comments.empty?
est plus beau queif !comments.empty?
mais l'utiliser avec une autre clause, comme.. :unless comments.empty? then aaa else bbb end
peut être plus déroutant que l'équivalent inversé :if comments.empty? bbb else aaa end
0 votes
Ruby ne suit pas le zen de Python : "Il devrait y avoir une - et de préférence une seule - manière évidente de le faire."