YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese, Brazilian subtitles

← 06-32 Mistakes Solution

06-32 Erros - Solução

Get Embed Code
3 Languages

Subtitles translated from English Showing Revision 1 created 02/22/2013 by Lucilia Figueiredo.

  1. Bem, vamos dar uma olhada.

  2. A primeira de fato é verdade.
  3. Com apenas uma função em nosso programa, teremos o ambiente global,
  4. e então o ambiente para nossa nova função, e
  5. fazemos esta declaração, ou este apontador para o pai,
  6. ir de volta para cá, para o ambiente global.
  7. É para aí que ele deve ir, mas é também aí que o erro o coloca,
  8. portanto não poderemos detectar a diferença.
  9. Agora, se isso não for uma função anônima,
  10. mas for uma função recursiva, como factorial,
  11. podemos ser capazes de ver o erro com apenas uma.
  12. Mas com apenas uma função anônima, não podemos ver o erro.
  13. 2) Precisamos de pelo menos 3 variáveis no ambiente global para ver o erro.
  14. Isso não é verdade.
  15. Uma variável no ambiente global, uma variável local --
  16. talvez até mesmo nenhuma variável no
  17. ambiente global -- seria perfeitamente ok.
  18. A única hora em que o apontador para o pai importa é quando
  19. estamos buscando uma variável em
  20. um ambiente filho, e não a encontramos localmente.
  21. Portanto, devemos poder construir um caso de teste
  22. que tenha apenas uma tal variável -- como a,
  23. no exemplo de baldr que vimos antes.
  24. Não precisamos de três.
  25. 3) Podemos mostrar o erro com apenas duas funções,
  26. cada qual declarada separadamente, no nível mais alto.
  27. Se eu tenho outra função -- função two -- declarada no nível mais alto,
  28. seu apontador para o pai deve apontar para o ambiente global,
  29. e, em razão do erro, ele apontará para o ambiente global, de qualquer modo.
  30. Portanto, isso não nos permite ver o erro.
  31. 4) Podemos mostrar o erro com uma função aninhada dentro de outra.
  32. É essa a idéia.
  33. Digamos que eu tenha a função one, e a função two aninhada dentro dela.
  34. O apontador de pai da função one --
  35. este apontador -- deve apontar para o ambiente global.
  36. O erro ira; fazê-lo apontar para o ambiente global.
  37. A função two deve apontar para a função one,
  38. mas o erro fará com que aponte para o ambiente global.
  39. Portanto, tudo o que eu tenho que fazer é colocar alguma variável `a' aqui,
  40. e fazer a função two referenciar essa variável.
  41. Então, em mu caso de teste, não vamos encontrá-la e vamos obter um erro,
  42. mas, de fato, deveríamos encontrá-la, e isso me
  43. indicará o erro.