Course Hive
Search

Welcome

Sign in or create your account

Continue with Google
or
028 - Escopo Léxico em Dart - Curso de FLUTTER/DART
Play lesson

Curso de FLUTTER e DART - 028 - Escopo Léxico em Dart - Curso de FLUTTER/DART

5.0 (1)
8 learners

What you'll learn

This course includes

  • 35.5 hours of video
  • Certificate of completion
  • Access on mobile and TV

Summary

Keywords

Full Transcript

Playlist: Curso Grátis de FLUTTER e DART Completo https://www.youtube.com/playlist?list=PL5EmR7zuTn_aX0pG4oWTyKKQT25Hkq2XG Curso de DART Alcance lexical Dart é uma linguagem de escopo léxico, o que significa que o escopo das variáveis ​​é determinado estaticamente, simplesmente pelo layout do código. Você pode "seguir as chaves para fora" para ver se uma variável está no escopo. Aqui está um exemplo de funções aninhadas com variáveis ​​em cada nível de escopo: bool topLevel = true; void main () {   var insideMain = true;   void myFunction () {     var insideFunction = true;     void nestedFunction () {       var insideNestedFunction = true;       assert (topLevel);       assert (insideMain);       assert (insideFunction);       assert (insideNestedFunction);     }   } } Observe como nestedFunction () pode usar variáveis ​​de todos os níveis, até o nível superior. Fechamentos lexicais Um encerramento é um objeto de função que tem acesso a variáveis ​​em seu escopo léxico, mesmo quando a função é usada fora de seu escopo original. As funções podem fechar as variáveis ​​definidas nos escopos adjacentes. No exemplo a seguir, makeAdder () captura a variável addBy. Onde quer que a função retornada vá, ela se lembra de addBy. /// Retorna uma função que adiciona [addBy] ao argumento da /// função. Função makeAdder (num addBy) {   return (num i) IGUAL MAIOR addBy + i; } void main () {   // Cria uma função que adiciona 2.   var add2 = makeAdder (2);   // Cria uma função que adiciona 4.   var add4 = makeAdder (4);   assert (add2 (3) == 5);   assert (add4 (3) == 7); } Testando funções para igualdade Veja um exemplo de teste de funções de nível superior, métodos estáticos e métodos de instância para igualdade: void foo () {} // Uma função de nível superior classe A {   barra estática de vazio () {} // Um ​​método estático   void baz () {} // Um ​​método de instância } void main () {   var x;   // Comparando funções de nível superior.   x = foo;   assert (foo == x);   // Comparando métodos estáticos.   x = A.bar;   assert (A.bar == x);   // Comparando métodos de instância.   var v = A (); // Instância # 1 de A   var w = A (); // Instância # 2 de A   var y = w;   x = w.baz;   // Estes encerramentos referem-se à mesma instância (# 2),   // então eles são iguais.   assert (y.baz == x);   // Estes encerramentos referem-se a diferentes instâncias,   // então eles são desiguais.   assert (v.baz! = w.baz); } Valores de retorno Todas as funções retornam um valor. Se nenhum valor de retorno for especificado, a instrução retornará nulo; é implicitamente anexado ao corpo da função. foo () {} assert (foo () == null);

Course Hive

Continue this lesson in the app

Install CourseHive on Android or iOS to keep learning while you move.

Related Courses

FAQs

Course Hive
Download CourseHive
Keep learning anywhere