O problema é que se a() for false, b() e c() não vão ser executados, e isso traz alguns problemas pra mim - eu vou precisar dos efeitos colaterais deles dentro do bloco else. Qual seria o melhor jeito de fazer isso de forma que a(), b() e c() fossem executados?
Às vezes a gente sente falta de uma linguagem que faça o que a gente quer dizer, não o que a gente diz :D
não daria de colocar o resultado dos metodos em variáveis?
booleana=a();booleanb=b();…
if(a && b && c) {
…
assim os métodos seriam executados…
urubatan
da para tirar os short circuit (substituir && por & )
mas o esquema complica no else, que em qualquer um dos casos, vai executar se a, e/ou b, e/ou c forem false, e não apenas se os 3 forem false.
para isto teria que armazenar os valores de retorno de a, b e c (para que eles não fossem executados novamente)
e transformar o else em else if (!(va && vb && vc)){}
ai, aqui o short circuit não tem mais problema
maxguzenski
if(a() & b() & c())
dessa forma todos sao executados, e so entra no “if” se todos forem verdadeiros
cv1
Valeu gente, era isso mesmo
Acabei usando a solução do urubatan, no fim das contas eu nao precisava entrar no else APENAS se a, b e c fossem false
louds
usa a operacao de identidade do E com o OU que funciona:
a&&b&&cfica!(!a||!b||!c)
quem disse que faculdade é completamente inutil…
urubatan
segundo grau de eletrônica também tem isto ai
mas não entendi o que tu quis dizer, o que tu colocou ali seria uma simples substituição, não elimina o short circuit
louds
tem razao
viajei total
vai causar exatamente o mesmo problema
G
Guilherme
Isto se chama satisfatibilidade
Seja H uma fórmula ;
H = (A ^ B ^ C ^ D)
é satifatível, se e somente se
I[A] = I[B] = I[C] = I[D] = T;
mas se…
I[A] = I[B] = T
I[C] = I[D] = F
A fórmula H é insatistatível
urubatan
agora fui eu quem viajou,
não entendi do que tu ta falando
entendi a formula que tu colocou e tudo,
mas isto tem a ver com o que mesmo??
se não me engano tu só explicou matematicamente como descobrir se uma “formula” é verdadeira ou falsa
G
Guilherme
é, eu só expliquei matematicamente, só que usando síbolos da lógica proposicional.
Eu só bati o olho na pergunta e tive uma sacada, que só seria executado algo se fosse satisfatível… hehehe…
agora eu usaria o loop switch