Lembra-se dos dias em que tinha de utilizar loops aninhados e declarações condicionais para recuperar o atributo de um objecto? Então acabou com um longo e complicado pedaço de código? Bem, esses dias acabaram! Graças à notação de objectos combinada com colecções e os seus métodos, agora é capaz de escrever código mais rapidamente, e de uma forma mais legível!
Encontrar o valor de um atributo específico nunca foi tão fácil. Vamos dar uma vista de olhos a um cenário da vida real e descobrir como!
Cenário da vida real
Imagine que quer filtrar os seus processos de execução pelo tipo deles.
Como já deve saber, o Get process activity permite recuperar uma lista de processos em execução e utilizadores conectados. Como se mostra abaixo, parte da informação devolvida é o tipo de processo:
{
{
"processos":[
{
"nome": "Principal",
"sessionID":"",
"número":0,
"ID":0,
"visível":falso,
"systemID":"140736073646912",
"tipo":-39, //Main 4D process
"estado":0,
"cpuUsage":0.033,
"cpuTime":922.62008,
"preemptive":true
},
{
"nome": "Processo de candidatura",
"sessionID":"",
"número":1,
"ID":13,
"visível":verdadeiro,
"systemID":"123145536053248",
"tipo":-1, //Processo principal
"estado":2,
"cpuUsage":0.002,
"cpuTime":187.902836,
"preemptivo":falso
},
{}
]
}
Vamos tentar encontrar o processo principal. Se o fizéssemos da maneira antiga, usaríamos um laço For com uma declaração condicional, o que nos deixa com um pedaço de código bastante longo:
C_OBJECT($obj)
C_LONGINT ($i)
ARRAY OBJECT (processesCol;0 )
$obj:=Get process activity
OB GET ARRAY($obj;"processos";processesCol)
ARRAY OBJECT ($result;0 )
For ($i;1;Size of array(processosCol))
If (OB Get(processosCol{$i}; "tipo")= Main process)
APPEND TO ARRAY($result;processosCol{$i})
End if
End for
O modo antigo funciona como um encanto, mas temos de admitir que é um pouco longo escrever apenas para encontrar um único elemento. Boas notícias! Graças ao query método de recolha, pode facilmente extrair o valor desejado … numa única linha de código!
C_COLLECTION($result).
$result:=Get process activityprocesses.consulta("type = :1";Main process)
E está feito! O seu código é limpo, fácil de compreender e mais legível. Viva a simplicidade!
Acabámos de riscar a superfície do que pode ser feito. E, claro, o método query suporta operações mais complexas! Além de consultar uma colecção, também pode encomendar, reduzir, expandir ou filtrar. Mais de 40 métodos estão disponíveis para uma utilização óptima das colecções!
De momento, não é possível deixar comentários nesta publicação.