No entanto, esta técnica me incomoda no aspecto de parecer anti-natural do ponto de vista da álgebra booleana, onde trabalhamos somente com dois valores (true/false, 0/1). Me parece misturar conversão de tipos de dados, com lógica booleana. Isso somente não me incomodaria, mas me fez pensar: que resultado eu terei de expressões como ( 0 == “”), (“” == null)? Será que ele adota o valor booleano pra comparar? Resolvi testar usando perl, python e javascript, e obtive resultados diferentes:
Perl: > perl -e ‘ $a=0; print( “” == $a); print “\n”; ‘ > 1
> perl -e ‘ $a=0; print( nil == $a); print “\n” ‘ > 1
Python: > python -c ‘_a=0; print ( _a == “” )’ > False
> python -c ‘_a=0; print ( _a == None )’ > False
Javascript: > var a=0; alert( a == “” ); > True
> var a=0; alert( a == null ); > False
Bom, como podemos ver, cada linguagem de programação tem sua forma de tratar este tipo de comparação. Desta forma, fica aqui o toque para se tomar cuidado com esta técnica, levando-se sempre em conta as especificidades da linguagem que você está utilizando.