Como agrupar várias condições em uma declaração if em peixes

2

Como está, o código abaixo é inválido, porque os colchetes não podem ser usados assim. se nós removê-los, corre bem, e saídas:

true
true

código:

#!/usr/bin/fish

if ( false ; and true ) ; or true
    echo "true"
else
    echo "false"
end

if false ; and ( true ; or true )
    echo "true"
else
    echo "false"
end

Como obter a funcionalidade indicada pelos colchetes?

resultado desejado:

true
false
    
por hoijui 27.02.2018 / 13:53

2 respostas

3

Você também pode usar begin e end para condicionais:

De tutorial sobre peixes :

For even more complex conditions, use begin and end to group parts of them.

Para um exemplo mais simples, você pode dar uma olhada em esta resposta do stackoverflow.

Para o seu código, basta substituir o ( por begin ; e o ) por ; end .

#!/usr/bin/fish

if begin ; false ; and true ; end ; or true
    echo "true"
else
    echo "false"
end

if false; and begin ; true ; or true ; end
    echo "true"
else
    echo "false"
end
    
por 27.02.2018 / 13:59
0

Solução alternativa : terceirizar parte da cadeia condicional para uma função

assim:

#!/usr/bin/fish

function _my_and_checker
    return $argv[1]; and argv[2]
end
function _my_or_checker
    return $argv[1]; or argv[2]
end

if _my_and_checker false true ; or true
    echo "true"
else
    echo "false"
end

if false; and _my_or_checker true true
    echo "true"
else
    echo "false"
end

Isso faz mais sentido se as condições em si forem comandos complexos.

    
por 27.02.2018 / 17:08

Tags