YouTube

Got a YouTube account?

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

Chinese, Simplified subtitles

← Cola Wars 1 - Solution

Get Embed Code
13 Languages

Showing Revision 2 created 07/26/2016 by Udacity Robot.

  1. 所以我问你的第一个事情是
  2. udacicolaVotes 是一个局部变量还是一个全局变量
  3. 然后你已经判断它是局部变量
  4. 好的 为了证明它 你要去声明这个变量的地方 在这
  5. 你知道它已经声明了 因为数据类型已经在这了
  6. 你看到这是一个方法内的声明 意味着在这两个花括号之间
  7. 或者它是方法外的声明?
  8. 现在 如果它是方法内的声明
  9. 这意味着它是一个局部变量
  10. 我们可以清楚看到方法内的声明
  11. 所以它是一个局部变量
  12. 好的 这意味着什么?
  13. 我们应该常常问自己
  14. 如果我声明局部变量 我应该怎么做?
  15. 让我们在这个例子里思考
  16. 这是我们的手机
  17. 我们已经讨论过 udacicola 所以
  18. 我们只关注点击 udacicola 按钮的时候
  19. 当我们点击这个按钮 这个方法开始
  20. 它将 udacicolaVotes 归零 并将1票加给 udacicolaVotes
  21. udacicolaVotes 的初始值是0
  22. 所以 udacicolaVotes 变为1
  23. 现在 因为 udacicolaVotes 是局部变量 在这个方法的最后
  24. 它实际上注销了 或者说被删除了
  25. 事实上 udacicolaVotes 已经废除了 或者 在这个方法的最后因为
  26. 它是局部变量 导致两个问题
  27. 为什么引起这些问题?
  28. 好的 你可以想象三个不同的人投票给 udacicola
  29. 通过点击按钮 udacicolaVvotes 会变为3
  30. 好的 当你第一次点击按钮时会发生 udacicola
  31. 归零
  32. 它加了1 变为1
  33. 之后它废除了
  34. 它就再也不存在了
  35. 第二次有人点击 udacicolaVvotes
  36. udacicolaVvotes 再把那些做一遍
  37. 它再一次声明
  38. 因为记得 第一次本质上已经废除了
  39. 所以它需要资源回收
  40. 当它资源回收 它归零
  41. 现在我们再对它加1 不过记得值是0
  42. 所以 udacicolaVvotes 依然是1 甚至当按钮被按两次
  43. 当点击三次同样的事情会发生
  44. 它还是1并且再次废除在方法的最后
  45. 所以这是第一个问题
  46. 它实际上没有存储点击两次的状态
  47. 关于多少人投票给 udacicola
  48. 不过另一个问题在这里 这段代码有一个错误
  49. 原因是 记得我说过的 udacicolaVvotes
  50. 存在或它的作用域开始于这里
  51. 在 voteudacicola 方法的最后
  52. 它被废除了 它不存在了
  53. 意味着当我回到这 udacicolaVotes 已经不存在了
  54. 更深技术层面 我们说这个变量不在作用域内
  55. 它的作用域在这 它声明在这 它在这结束
  56. 我们试着把它用在这
  57. 它不能使用
  58. 在这个例子里将 udacicolaVotes 定义为局部变量是不正确的决定
  59. 我把它总结为这两点
  60. 它在两次点击按钮之间不能保存票数 并且对于显示 Votes 方法
  61. 不是在作用域里
  62. 所以这会引起错误
  63. 这不能被编译
  64. 好的 让我们看看这个程序的另一个变量