Tengo una enorme duda, ¿eso realmente funciona?
Nunca he usado Ruby y a lo mejor es que no entiendo la lógica de la última línea (que parece ser lo único que has cambiado).
disobedient tiene un valor que puede ser verdadero o falso.
!disobedient es la negación del valor anterior por lo que siempre tendrá el valor contrario.
Entonces pienso,
¿qué pasa con esta condición? Porque hasta donde sé el operador lógico
and (
&&) devuelve
true si y sólo si ambos operandos lo son.
Código:
if desobedient && !desobedient
- desobedient = true => !desobedient = false => desobedient && !desobedient = true && false = false
- desobedient = false => !desobedient = true => desobedient && !desobedient = false && true = false
Si no me equivoco, eso devolverá siempre
false y no
true.
Ahora, si lo que quieres es que devuelva siempre
true, ¿por qué no directamente te olvidas de la condición?
Si igual quieres poner la condición, ¿no sería mejor usar un
or (
||)?
Código:
return true if desobedient || !desobedient
En este caso, siempre que uno de los dos fuera
true, devolvería
true sin importar el valor del otro y como sabemos que uno es el contrario al otro y son booleanos, siempre habrá uno que será
true.