YouTube

Got a YouTube account?

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

Vietnamese subtitles

← Cola Wars 1 - Solution

Get Embed Code
13 Languages

Showing Revision 2 created 11/11/2015 by Fran Ontanaya.

  1. Điều đầu tiên mà tôi hỏi bạn,
  2. là udacicolaVotes là biến cục bộ
    hay biến toàn cục.
  3. Và bạn cần xác định
    rằng nó là biến cục bộ.
  4. Vâng, để tìm hiểu, bạn đi đến nơi
    khai báo biến, trong trường hợp này là
  5. ở đây, và bạn biết nó đã được khai báo,
    vì kiểu dữ liệu ở ngay tại đây.
  6. Bạn xem nó có được khai báo Bên trong
    phương thức, có nghĩa là ở giữa hai
  7. dấu ngoặc ôm ở đây, hay
    nó được khai báo bên ngoài phương thức?
  8. Bây giờ, nếu nó được khai báo
    bên trong của một phương thức,
  9. thì có nghĩa rằng nó là một biến cục bộ,
  10. ta có thể thấy rõ ràng rằng trong thực tế
    nó được khai báo bên trong phương thức.
  11. Nên nó là biến cục bộ.
  12. Ồ, vậy điều đó có nghĩa là gì?
  13. Chúng ta cũng nên tự hỏi,
  14. nếu tôi khai báo một thứ là
    một biến cục bộ, tôi có nên?
  15. Hãy nghĩ về nó trong trường hợp này.
  16. Đây là điện thoại của chúng tôi.
  17. Chúng ta đã nói về udacicola, nên
  18. hãy chỉ tập trung vào khi chúng ta
    nhấn nút udacicola.
  19. Khi ta nhấn vào nút này,
    phương thức này bắt đầu.
  20. Nó đặt phiếu udacicola bằng không,
    sau đó nó thêm một vào udacicolaVotes,
  21. thứ hiện đang bằng không.
  22. Và udacicolaVotes trở thành một.
  23. Vì udacicolaVotes là biến cục bộ,
    ở cuối phương thức này,
  24. nó sẽ biến mất hoặc bị xóa,
  25. udacicolaVotes bị đẩy vào thùng rác, hoặc
    biến mất, khi kết thúc phương thức này vì
  26. nó là một biến cục bộ,
    gây ra một số vấn đề.
  27. Vậy, tại sao nó là một vấn đề?
  28. Bạn sẽ nghĩ rằng nếu
    ba người khác nhau bình chọn cho
  29. udacicola bằng cách nhấn vào nút,
    mà udacicolaVotes phải bằng ba.
  30. Vâng, điều xảy ra là lần đầu tiên
    khi bạn nhấn vào nút, udacicola
  31. trở thành không.
  32. Nó thêm một vào, và trở thành một.
  33. Và rồi nó bị đẩy vào thùng rác.
  34. Nó không còn tồn tại nữa.
  35. Lần thứ hai người nào đó
    nhấp chuột vào udacicolaVotes,
  36. udacicolaVotes được thực hiện
    thêm một lần nữa.
  37. Nó lại được khai báo.
  38. Bởi vì, hãy nhớ rằng lần đầu tiên
    nó đã bị gạt vào thùng rác.
  39. Nên nó cần phải được làm lại.
  40. Và khi nó vẫn còn, nó được đặt bằng không.
  41. Bây giờ chúng ta thêm một vào, nhưng
    nhớ giá trị là không.
  42. Vậy nên udacicolaVotes vẫn là một,
    dù đã nhấn vào nút đó hai lần.
  43. Và điều tương tự sẽ xảy ra khi
    nhấn vào nút đó lần thứ ba,
  44. nó vẫn là một và nó lại bị xóa
    một lần nữa ở cuối phương thức này.
  45. Đó là vấn đề đầu tiên.
  46. Nó thực ra không lưu trạng thái
    giữa các lần nhấn nút.
  47. Khoảng bao nhiêu người đã bình chọn cho
    udacicola.
  48. Nhưng vấn đề là ở đây, đoạn mã
    này gây ra một lỗi.
  49. Và lý do của nó là vì
    hãy nhớ tôi đã nói rằng udacicolaVotes
  50. tồn tại hoặc
    phạm vi của nó bắt đầu ngay đây.
  51. Sau đó ở cuối
    phương thức voteudacicola này.
  52. Là thùng rác, nó không còn tồn tại.
  53. Có nghĩa là khi tôi đến đây,
    udacicolaVotes không tồn tại.
  54. Nói một cách kỹ thuật hơn thì
    biến này nằm ngoài phạm vi.
  55. Phạm vi của nó ở đây,
    Nó được khai báo ở đây và kết thúc ở đây.
  56. Nhưng ta đang cố gắng dùng nó ở đây.
  57. Và không thể dùng được nó.
  58. Để udacicolaVotes là biến cục bộ không là
    quyết định đúng đắn trong trường hợp này.
  59. Và tôi có thể tóm tắt lý do tại sao
    với hai điểm này.
  60. Nó không lưu các phiếu giữa các lần
    nhấn nút, và nó không thuộc phạm vi của
  61. phương thức cho tôi thấy các phiếu.
  62. Vì vậy, nó thực ra sẽ gây ra lỗi.
  63. Nên nó sẽ không biên dịch.
  64. Giờ hãy xem đến các
    biến khác trong chương trình này.