Choose Case: Cases com datatypes variados

Choose Case é o equivalente do PowerBuilder ao Switch dp C# e é uma opção boa, mas se você utilizar uma variável numérica, está preso nela para todo o choose.  [música de suspense]

Existe uma solução para isso, uma forma de utilizar o choose case com quantas variáveis você precisar e misturando datatypes diferentes.

Este é um Choose Case tradicional, verificando o retorno de um FileOpen:

long ll_ret
ll_ret = FileOpen(ls_filePath)

choose case ll_ret
    case -1
        return "Erro ao fazer retrieve"
    case else
        return "Arquivo aberto corretamente. Handle: " + string(ll_ret)
end choose

Ok, funciona. Foi possível verificar o resultado da função, mas faltou um fator: Se a referência para o arquivo (ls_filePath) for nula, não vai funcionar.

Temos uma alternativa: Fazer o Choose Case testando a condição true. Sim: Choose case true! Desta forma você consegue testar o que for necessário. Veja o exemplo abaixo:

long ll_ret
ll_ret = FileOpen(ls_filePath)

choose case true
    case (ll_ret = -1)
        return "Erro ao fazer retrieve"

    case (ll_ret > 0)
        return "Arquivo aberto corretamente. Handle: " + string(ll_ret)

    case isNull(ll_ret)
        return "O arquivo informado é nulo"

    case else
        return "Algum erro não esperado ocorreu. Retorno: " + string(ll_ret)
end choose

Pronto. Agora foi possível cobrir todas as possibilidades do FileOpen com apenas 1 Choose Case. Neste formato, você consegue testar várias coisas, desde que apenas uma das operações retorne true.

Com esta técnica, você consegue realizar uma gama muito maior de verificações com menos código e uma estrutura mais legível.

Dúvidas sobre  o artigo? Sugestões? Precisa de ajuda com outra funcionalidade do PowerBuilder? Deixe um comentário.

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, PowerBuilder and tagged , , .