No meu aplicativo baseado em Dart, acabei de notar que posso omitir a new
palavra - chave e tudo funciona perfeitamente.
Em vez de final widget = new Widget();
também posso usar final widget = Widget();
.
Isso tem algum efeito no código?
No meu aplicativo baseado em Dart, acabei de notar que posso omitir a new
palavra - chave e tudo funciona perfeitamente.
Em vez de final widget = new Widget();
também posso usar final widget = Widget();
.
Isso tem algum efeito no código?
Respostas:
Não, não tem. Com o Dart 2 (clique para ver o anúncio com mais informações), as palavras-chave new
e também const
se tornaram opcionais .
Isso significa que new Widget()
faz exatamente o mesmo que Widget()
por conta própria.
A const
palavra-chave pode, no entanto, alterar um valor que não seria a const
implicitamente para a const
.
Portanto, você terá que especificar explicitamente const
quando necessário.
new
é obrigatório. Se você omitir new
um programa correto, ele sempre continuará funcionando da mesma maneira. Se você remover const
de um programa em funcionamento, na maioria dos casos em que teria que escrever const
para que o programa fosse válido, ele ainda será válido. Sempre que já houver um const
circundando a expressão, você pode omitir o const aninhado.
No Dart 2, se você invocar um construtor como uma função, sem um new
ou const
na frente, é equivalente a usar new
. Se você quiser uma invocação const, deve colocá-la const
na frente.
Dentro de uma expressão const, você não precisa escrever const
novamente, e em alguns contextos que requerem expressões const (como expressões de switch case e inicializadores de variáveis const), você nem mesmo precisa do const externo.
Então, você nunca precisa escrever new
.
A equipe da linguagem Dart deseja permitir expressões onde você pode inserir new
ou const
e ainda ter a invocação correta (ou seja, um construtor const com argumentos constantes) para inserir como padrão em const
vez de new
, esperançosamente em uma atualização antecipada do Dart 2. Por esse motivo , Eu recomendo escrevê- new
lo antes de Object()
, ou qualquer outro construtor const onde você precisa que o objeto seja uma nova instância. Esse é um caso muito raro, geralmente você não se preocupa com a identidade do seu objeto imutável (é por isso que inserir const
é considerado uma boa ideia).
Como todas as outras respostas afirmam, no Dart 2, o uso new
é opcional. Além disso, o uso new
é desencorajado pelas diretrizes de Dardos Eficazes .
A new
palavra-chave tornou-se opcional no Dart 2. A partir de agora, chamar uma classe sempre retornará uma nova instância dessa classe. Conforme minha recomendação, você pode usá-lo ( NÃO OBRIGATÓRIO ) fora de uma definição de Layout, mas omitir dentro de Layouts.
Mais um ponto que eu gostaria de compartilhar com vocês é que se você usar uma palavra new
- const
chave ao declarar widgets , você também poderá ver o ícone + que pode ser usado para recolher e expandir o código do corpo do widget. Isso é útil quando você deseja recolher / ocultar o código do widget restante no arquivo dart enquanto trabalha em outro código do widget no mesmo arquivo.
new
é desencorajado: usá-lo parece que cria uma nova instância incondicionalmente, quando talvez não.
new
ouconst
ainda são obrigatórios (não me lembro de exemplos ou regras). Eles podem fazer outra tentativa após o Dart 2 para torná-lo opcional em todos os lugares.