Eu devo ser muito estúpido... mas alguém que está falando isso (ja é
o 3o), poderia fazer o favor de me explicar porque ele deve usar &&
no
lugar do 'and' e qual diferença isso faz no caso deste if específico?
E em quais situações deve-se usar o 'and' no lugar de &&?
Não é estúpido não. Vamos analisar a tabela da verdade da função and ou
&&:
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1
Então, no if do código do nosso biólogo não haveria impacto real, sorry
eu me deixei levar por outras coisas que estava pensando aqui.
Mas voltando ao if:
if($keys >= $min and $keys <= $max)
O operador de short circuit só avaliaria a expresssão da direita ($keys
<= $max) se a primeira expressão for verdadeira. Ou seja, se $keys for
menor que $min o Perl nem vai perder tempo checando pois 0 x N = 0.
Então aqui eu me enganei, não ia fazer diferença no código do nosso
colega.
Por outro lado, vamos supor um caso que você queira aproveitar o teste
if e executar duas subs na mesma linha de código:
if ( &foo and &bar ){
...faça alguma coisa
}
else {
... &bar só será executada se &foo retornar true
}
por outro lado:
if ( &foo && &bar ){
...&foo e &bar foram executadas. faça alguma coisa
}
else {
... &foo e &bar foram executadas mesmo com o && retornando false.
}
essa é a diferença.
Em 2012-11-29 22:09, Bruno Buss escreveu:
2012/11/29 <thiagogla...@ticursos.net>
Seu primeiro erro é o operador and. No documento perlop: $ perldoc
perlop você vai descobrir o seguinte:
" Logical And
Binary "and" returns the logical conjunction of the two
surrounding expressions. It's equivalent to && except for
the very low precedence. This means that it short-circuits:
i.e., the right expression is evaluated only if the left
expression is true.
[...]
C-style Logical And
Binary "&&" performs a short-circuit logical AND operation.
That is, if the left operand is false, the right operand is
not even evaluated. Scalar or list context propagates down
to the right operand if it is evaluated."
Logo, seu código
if($keys >= $min and $keys <= $max){
deveria ser if($keys >= $min && $keys <= $max){
Eu devo ser muito estúpido... mas alguém que está falando isso (ja é
o 3o), poderia fazer o favor de me explicar porque ele deve usar &&
no
lugar do 'and' e qual diferença isso faz no caso deste if específico?
E em quais situações deve-se usar o 'and' no lugar de &&?
[ ]'s--
Bruno C. Buss
http://www.brunobuss.net [1]
Links:
------
[1] http://www.brunobuss.net
_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm
_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm