YouTube

Got a YouTube account?

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

Arabic subtitles

Cola Wars 1 - Solution

Get Embed Code
13 Languages

Showing Revision 2 created 12/28/2015 by Fran Ontanaya.

  1. حسناً أول سؤال اسأله لك
  2. فيما إذا كان udacicolaVotes
    متحول محلي أو متحول عام
  3. ويجب أن تكون قد حددت
    أنه متحول محلي
  4. حسناً، لإستنتاج ذلك، ستذهب
    إلى المكان الذي حدد به المتغير، وهو
  5. هنا، وأنت تعلم بأنه قد تم تحديده
    بسبب نمط البيانات الموجودة هنا
  6. وكما ترى هل تم تعينه داخل
    الطريقة، هنا بين قوسين التنصيص، أو
  7. تم تحديده خارج الطريقة؟
  8. الآن، إذا تم تعينه
    داخل الطريقة
  9. هذا يعني أنه متحول محلي
  10. يمكننا أن نرى بشكل واضح جداً
    أنه في الحقيقة تم تعيينه داخل الطريقة
  11. لذلك فهو متحول محلي
  12. حسناً، ماذا يعني ذلك؟
  13. علينا أيضاً أن نسأل أنفسنا
  14. إذا صرحت عن شيء كمتحول محلي
    هل ينبغي أن أفعل ذلك؟
  15. دعونا نفكر به ضمن هذه الحالة
  16. ها هو هاتفنا
  17. وكنا نتحدث عن "udacicola" لذلك
  18. دعونا نركز فقط عندما
    نضغط على زر udacicola
  19. عندما نضغط على هذا الزر
    ستبدأ هذه الطريقة
  20. سيتم تحديد قيمة udacicolaVotes بالصفر
    وبعد ذلك يضاف واحد إلى udacicolaVotes
  21. والتي هي صفر
  22. لذلك ستصبح udacicolaVotes واحد
  23. الآن، ولأن udacicolaVotes هو متحول محلي
    ففي نهاية هذه الطريقة
  24. في الواقع سيتوقف
    أو سيحذف
  25. في الواقع أن udacicolaVotes مهمل
    أو ضائع، في نهاية هذه الطريقة لأنه
  26. متحول محلي
    ويسبب ذلك مشاكل الإزدواج
  27. حسناً لماذا تعتبر هذه مشكلة؟
  28. حسناً، ستعتقد إن
    صوّت ثلاثة أشخاص مختلفين لـ
  29. عن طريق النقر على الزر udacicola
    فإن قيمة udacicolaVotes يجب أن تكون ثلاثة
  30. حسناً، ما يحصل في الواقع أن المرة الأولى
    التي تقوم بها بالضغط على الزر
  31. فإن udacicola ستصبح صفر
  32. سيتم إضافة واحد لها، لذلك ستصبح واحد
  33. ومن ثم سوف تهمل
  34. فهي ليست موجودة بعد الآن
  35. في المرة الثانية التي يقوم بها
    شخص ما بالضغط على udacicolaVotes
  36. فستقوم udacicolaVotes بتكرار
    ذلك كله مجدداً
  37. لقد تم تعيينه مرة أخرى
  38. تذكر السبب أنه في المرة الأولى
    قد تم إهماله بشكل أساسي
  39. لذلك يجب أن يعاد إنشاؤه
  40. وعندما يبقى هكذا، فيتم تعيينه كصفر
  41. الآن نقوم بإضافة واحد مرة أخرى
    ولكن تذكر بأن القيمة صفر
  42. فلذلك فإن udacicolaVotes لا تزال واحد
    على الرغم من أنه تم النقر على الزر مرتين
  43. ونفس الشيء يحدث
    عندما يتم النقر عليه للمرة الثالثة
  44. هو مازال واحد، وفي الواقع قد تم
    إهماله مرة أخرى في نهاية هذه الطريقة
  45. لذلك هذه هي المشكلة الأولى
  46. فهو حقاً لا يخزّن
    الحالة بين ضغط الأزرار
  47. فكم من الأشخاص قد
    صوتوا لـ "udacicola"
  48. ولكن المشكلة الأخرى هي هنا
    هذا الكود الذي سيؤدي إلى خطأ
  49. وتفسير ذلك هو إن كنت تتذكر
    عندما قلت أن udacicolaVotes
  50. سيصبح نوعاً ما موجود
    أو أن نطاقه سيبدأ من هنا
  51. ومن ثم في نهاية
    هذه الطريقة لـ voteudacicola
  52. سيهمل، ولن يعد موجود
  53. مما يعني أنه عندما أنظر للأسفل هنا
    فإن udacicolaVotes غير موجوة حقاً
  54. وبشكل تقني أكثر، نقول
    أن هذا المتحول هو خارج النطاق
  55. فقد كان نطاقه هنا وتم تعيينه هنا
    وانتهى الأمر به هنا
  56. ولكننا نحاول أن نستخدمه هنا
  57. ولا يمكن استخدامه
  58. فوجود udacicolaVotes بشكل محلي لم
    يكن قراراً صحيحاً في هذه الحالة
  59. ويمكنني أن ألخص السبب
    بنقطتين التاليتين
  60. لا يقوم بتخزين التصويت بين
    الضغط على الزر، كما أنه ليس ضمن النطاق
  61. لكي يريني طريقة التصويت
  62. لذلك هذا سيسبب أخطاءً في الواقع
  63. ولذلك فإن ذلك لن يكن محدداً
  64. حسناً، دعونا ننظر إلى
    متحول أخر في هذا البرنامج