Sonha em usar avaliação de curto-circuito, operadores ternários, libertar-se de um loop, ou sair de um método com uma simples palavra-chave?
Bem, não sonhe mais! Ouvimos e estivemos atentos aos seus pedidos de funcionalidades do Fórum 4D, por isso aqui vem um conjunto de melhorias linguísticas 4D que o ajudarão a simplificar o seu código.
voltar, continuar, e quebrar
Acrescentamos 2 novas declarações que lhe permitem saltar de um bloco de código:
- O return A palavra-chave encerra a execução do método ou função em que aparece e devolve o controlo ao método de chamada. Pode também devolver um valor opcional:
function factorial ( $n : Integer) : Integer
If ($n<1)
return 1
Else
return $n*factorial($n-1)
End if
- O break a palavra-chave encerra o laço que a contém. A seguinte declaração executada é a que se segue imediatamente após o corpo do laço:
For ($i; 1; 100)
If ($myTab{$i}="")
break
End if
End for
If ($i<101)
// your code
End if
- A continue declaração encerra a execução das declarações na iteração actual do loop actual e continua a execução do loop com a próxima iteração:
For ($i; 0; 10)
If ($i=3)
continue
End if
$text+=String($i)
End for
// $text="012456789"
avaliação de curto-circuito
Numa expressão que utiliza um operador AND ou OR, uma avaliação de curto-circuito significa que o segundo argumento só é executado ou avaliado se o primeiro argumento não for suficiente para determinar o valor da expressão. Acrescentámos dois novos operadores para o fazer:
Esta nova forma de escrever os seus operadores AND e OR permite-lhe escrever este tipo de teste numa só linha:
if (($myColl.length>0) && ($myColl[$i]>10))
// your code
End if
Se $myColl estiver vazio, o segundo argumento não é executado, pelo que não é atirado nenhum erro.
Assim, é claro, todos compreendem o interesse deste estilo de escrita para tornar o vosso código mais legível. Mas permite-vos ir mais longe.
Quando escreve expr1 && expr2 ou expr1 || expr2, 4D avalia ambas as expressões truthy ou falsy natureza. Os valores listados abaixo são considerados como falsy:
- falso
- Null
- indefinido
- Null objecto
- Null colecção
- Null ponteiro
- Null imagem
- Null data
- “” – Cordas vazias
- [] – Colecções vazias
- {} – Objectos vazios
Todos os outros valores são considerados truthy.
O || operador devolve a primeira expressão se a primeira expressão for truthycaso contrário, devolve o segundo.
O operador && devolve a primeira expressão, se a primeira expressão for falsycaso contrário, devolve o segundo.
Por exemplo, o código abaixo não devolve um valor booleano mas sim um valor numérico:
$salary:= $employee.salary || $minSalary
$employee.salary é avaliado em primeiro lugar. Se o seu resultado não for Nulo, é considerado como truthy e devolvido.
Se $employee.salary é Null, e portanto falsyA segunda expressão($minSalary) é avaliada e o seu resultado é devolvido.
operadores de atribuição composta
Os operadores de tarefas compostas são uma forma simplificada de operações de escrita:
- O operador de atribuição de adição (+=) adiciona o valor do operando correcto a uma variável e atribui o resultado à variável.
$a+=5
// equals to $a:=$a+5
- O operador de atribuição de subtracção (-=) subtrai o valor do operando direito a uma variável e atribui o resultado à variável.
$s-=5
// equals to $s:=$s-5
- O operador de atribuição de divisão (/=) divide uma variável pelo valor do operando direito e atribui o resultado à variável.
$d/=2
// equals to $d:=$d/2
- O operador de atribuição de multiplicação (*=) multiplica uma variável pelo valor do operando certo e atribui o resultado à variável.
$m*=5
// equals to $m:=$m*5
Operador ternário
Um operador ternário é uma condição seguida de um ponto de interrogação ( ? ), uma expressão para avaliar se a condição é truthy seguida de um cólon ( : ). Finalmente, a expressão para avaliar se a condição é falsy: condição ? valor Se Verdadeiro : valor Se Falso
Por exemplo, pode escrever:
$label:=($size>1000) ? "big" : "small"
O operador ternário é muito semelhante ao comando Choose, excepto que Choose aceita apenas uma expressão booleana como condição quando o operador ternário aceita todos os tipos e testa a sua falsy e truthy estatuto.
Mais informação está disponível aqui.