Desde Delphi 10.3, você tem a possibilidade em Delphi de declarar variáveis em linha diretamente em seu código. Não estávamos acostumados a isso em Delphi, então você pode achar isso um pouco confuso. Mas tem algumas vantagens.
Em primeiro lugar, faz com que as variáveis sejam escopadas. Portanto, elas só funcionam no escopo onde são declaradas. Elas também só estão disponíveis, é claro, após o momento em que são declaradas. Isto reduz bastante a chance de erros. É menos provável que você reutilize uma variável com a chance de inicialização incorreta. A refatoração também facilita a cópia do código para outra função.
Ao mover o código em uma função, você também pode ver imediatamente que outras inicializações você precisa levar consigo.
No exemplo de código abaixo, você pode ver como isto funciona. Suponha que você mova a parte se Cliente.IsNew a partir daqui, você verá automaticamente (através do Code Insight, mas também através da compilação) que a variável Cliente é desconhecida. Este não é o caso com a declaração clássica.
if IsCustomer then begin var Customer := Order.Customer; if Customer.IsNew then begin var DisplayName := Customer.CompanyName + Customer.Name; ... SendEmail(Customer, DisplayName); end; end;
Outra vantagem é o reconhecimento automático do tipo. Portanto, você não precisa mais indicar de que tipo uma variável é. Isto também reduz a necessidade de incluir uma unidade no arquivo no qual você está trabalhando. O Code Insight também reconhece o tipo, assim você pode simplesmente continuar trabalhando com ele.
Suponha que você tenha as seguintes unidades:
unit DataModel.Customer; interface type ICustomer = interface ['GUID'] function CompanyName: string; function Name: string; end;
unit DataModel.CustomerOrder; interface uses DataModel.Customer; type ICustomerOrder = interface ['GUID'] function Customer: ICustomer; end;
No primeiro exemplo, utilizamos isto da mesma forma:
var Customer := Order.Customer; // Returns a ICustomer
Quando uma função retorna um tipo específico (como uma interface neste exemplo), não é necessário definir esta variável ou incluir a unidade.
Se você usar interfaces, há uma exceção a esta regra. E isto é quando você cria um objeto e quer usá-lo como uma variável de interface. Então você tem que declarar o tipo também, caso contrário a variável é automaticamente digitada como a variante `T…`.
var Customer: ICustomer := TCustomer.Create;
As variáveis que você declara para um loop também podem ser declaradas diretamente em linha. Isto geralmente é melhor, porque você sempre declara a variável especificamente para um laço. Mais uma vez, isso evita que você use uma variável de loop após seu código de loop e potencialmente criando problemas com ela.
for var i := o to List.Count - 1 do ... for var Customer in MailingList.Customers do ...
Embora a declaração de variáveis em linha seja implementada em Delphi 10.3, o Code Insight não a reconhece. No entanto, o compilador o reconhece. Portanto, em Delphi 10.3, não se deixe enganar pela linha vermelha abaixo de seu código, ele também funciona lá.
Contato