Linguagem 4D: As melhorias que solicitou estão aqui

Tradução automática de Deepl

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:

  • && para o operador AND:
  • ||| para o operador OR

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.

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.