﻿1
00:00:04,270 --> 00:00:05,530
‫أهلا ومرحبا.

2
00:00:05,530 --> 00:00:11,830
‫في هذه المحاضرة ، سوف نتعلم كيف يمكننا إزالة دبابيس التنفيذ من وظائفنا الخاصة

3
00:00:11,830 --> 00:00:15,760
‫وكيف ومتى يكون القيام بذلك فكرة جيدة.

4
00:00:15,760 --> 00:00:16,690
‫دعنا نتعمق.

5
00:00:16,960 --> 00:00:23,560
‫لذلك من الغريب بعض الشيء أن تحتوي وظيفة الذخيرة لدينا الآن على دبابيس تنفيذ عندما لم نكن بحاجة إلى

6
00:00:23,560 --> 00:00:27,610
‫ذلك في السابق وهذا نوع من جعل الكود الخاص بنا أسوأ قليلاً.

7
00:00:27,610 --> 00:00:29,110
‫إذن ما هذا؟

8
00:00:29,110 --> 00:00:35,710
‫لماذا حدث ذلك ولماذا تتطلب بعض العقد الوظيفية دبابيس تنفيذ وأخرى لا تتطلبها؟

9
00:00:35,710 --> 00:00:39,850
‫حسنًا ، كل هذا يعود إلى شيء يسمى التأثير الجانبي.

10
00:00:39,850 --> 00:00:42,250
‫إذن ما هو التأثير الجانبي؟

11
00:00:42,250 --> 00:00:50,260
‫في الأساس ، يكون التأثير الجانبي عندما يكون للوظيفة نوع من التأثير الملحوظ بعد تشغيلها.

12
00:00:50,350 --> 00:00:52,090
‫الآن ماذا أعني بهذا؟

13
00:00:52,090 --> 00:00:57,060
‫دعنا نلقي نظرة على بعض الأمثلة للوظائف ذات الآثار الجانبية حتى تتمكن من فهم المطبوعات والطباعة

14
00:00:57,400 --> 00:00:58,420
‫والسلسلة.

15
00:00:58,870 --> 00:01:01,090
‫بعد تشغيل سلسلة الطباعة.

16
00:01:01,090 --> 00:01:05,860
‫من الواضح تمامًا أن شيئًا ما قد حدث لأنه يوجد الآن سلسلة على شاشتك.

17
00:01:05,860 --> 00:01:12,490
‫يمكنك أن ترى أن هناك دفعة تضيف سلسلة من الواضح أن لها تأثيرًا يمكن ملاحظته لأن

18
00:01:12,490 --> 00:01:16,960
‫الشيء الذي أضفت الدافع إليه فجأة ينطلق بعيدًا.

19
00:01:17,440 --> 00:01:25,210
‫تعيين الذخيرة له تأثير يمكن ملاحظته لأنه بعد تعيين الذخيرة ، تغيرت القيمة في هذا المتغير.

20
00:01:25,210 --> 00:01:29,320
‫الآن في هذه المرحلة ، قد تتساءل ، حسنًا ، من المؤكد أن كل وظيفة لها تأثير يمكن ملاحظته.

21
00:01:29,320 --> 00:01:31,540
‫وإلا ما هو الهدف منه؟

22
00:01:31,600 --> 00:01:32,740
‫كذلك ليس تماما.

23
00:01:32,740 --> 00:01:35,590
‫هناك أشياء مثل وظائف خالصة.

24
00:01:35,590 --> 00:01:37,600
‫ما هي الوظيفة الصرفة؟

25
00:01:38,200 --> 00:01:41,170
‫إنها في الأساس وظيفة بدون آثار جانبية.

26
00:01:41,170 --> 00:01:45,040
‫ومع ذلك ، فإنه يحتوي على قيم إرجاع.

27
00:01:45,040 --> 00:01:47,380
‫إذن هناك قيم تخرج من هذه الوظيفة.

28
00:01:47,380 --> 00:01:53,830
‫وهذا هو الغرض الكامل من الدالة وهو حساب هذه القيم وإعطائنا.

29
00:01:53,830 --> 00:01:57,250
‫لذا مرة أخرى ، دعنا نلقي نظرة على بعض الأمثلة لأن هذا سيجعلها أكثر وضوحًا.

30
00:01:57,520 --> 00:01:58,570
‫احصل على الذخيرة.

31
00:01:58,570 --> 00:02:01,090
‫هذه وظيفة خالصة.

32
00:02:01,090 --> 00:02:06,640
‫ليس له أي آثار جانبية لأنه يمكنك الحصول على الذخيرة عدة مرات كما تريد.

33
00:02:06,640 --> 00:02:12,940
‫وما لم تفعل شيئًا بالقيمة التي حصلت عليها منه ، برنامجك ، فلن تكون

34
00:02:12,940 --> 00:02:14,380
‫لعبتك مختلفة.

35
00:02:14,380 --> 00:02:20,320
‫يمكنك الاستمرار في الحصول على الذخيرة طوال الوقت ، طوال الوقت خلال اللعبة ولن يكون هناك

36
00:02:20,320 --> 00:02:22,780
‫شيء مختلف يمكن ملاحظته في لعبتك.

37
00:02:22,810 --> 00:02:24,910
‫احصل على متجه نشط للأمام.

38
00:02:24,910 --> 00:02:27,730
‫هذا آخر حيث يمكنك الحصول عليه عدة مرات كما تريد.

39
00:02:27,730 --> 00:02:34,330
‫لن يغير أي شيء حتى تفعل شيئًا بالقيمة التي تم إرجاعها وكل هذه الوظائف

40
00:02:34,330 --> 00:02:37,900
‫الرياضية مثل الضرب ناقصًا أكبر.

41
00:02:37,900 --> 00:02:47,260
‫كل هذه العقد ليس لها تأثير على مشروعك حتى يتم استخدام نتائجها لغرض أكبر.

42
00:02:47,260 --> 00:02:53,290
‫لذلك تسمى هذه الوظائف الصرفة ، وربما يمكنك أن ترى أن هذه هي بالضبط العقد التي لم

43
00:02:53,290 --> 00:02:56,920
‫يكن بها أي دبابيس تنفيذ لأنها لا تحتاج إليها.

44
00:02:56,920 --> 00:03:04,330
‫لا يهم عندما أركض للحصول على الذخيرة أو ما إذا كنت أجريها 50 مرة أو مرة واحدة ، فلن يكون الأمر

45
00:03:04,330 --> 00:03:08,320
‫مهمًا لأنه ليس له أي آثار جانبية يمكن ملاحظتها.

46
00:03:08,560 --> 00:03:13,540
‫إذن كيف يمكننا أن نشير إلى المخطط أن الوظيفة نقية؟

47
00:03:13,660 --> 00:03:16,150
‫حسنًا ، دعنا نلقي نظرة على وظيفة الاختبار الخاصة بي هنا.

48
00:03:16,150 --> 00:03:20,800
‫لذلك سأقوم بتحديده في الرسم البياني للحدث أو في جزء المخطط الخاص بي.

49
00:03:21,010 --> 00:03:25,870
‫ويمكنك أن ترى أنه في جزء التفاصيل يوجد مربع اختيار يسمى خالص.

50
00:03:25,870 --> 00:03:31,150
‫لذلك إذا قمت بتحديد مربع الاختيار هذا ، فلاحظ أن دبابيس التنفيذ قد اختفت للتو.

51
00:03:31,150 --> 00:03:35,410
‫وكل ما لدينا الآن هو مدخلات ومخرجات هذه الدالة.

52
00:03:35,410 --> 00:03:40,120
‫الآن سيتم تشغيل هذه الوظيفة كلما احتجنا إلى الإخراج.

53
00:03:40,120 --> 00:03:46,750
‫لذلك إذا قمت بتوصيل هذا الإخراج بسلسلة طباعة ، فسيتم تشغيل هذه الوظيفة قبل سلسلة الطباعة

54
00:03:46,750 --> 00:03:51,910
‫بحيث يكون لها النتيجة في الوقت المناسب لتنفيذ سلسلة الطباعة.

55
00:03:51,910 --> 00:03:57,700
‫يمكننا أن نفعل الشيء نفسه مع أي وظيفة حيث لا توجد آثار جانبية ، حيث لا

56
00:03:57,700 --> 00:04:01,450
‫توجد آثار ملحوظة مثل وظيفة الذخيرة لدينا.

57
00:04:01,450 --> 00:04:06,280
‫لذلك أود أن أتحداك لجعل الذخيرة في وظيفة خالصة.

58
00:04:06,280 --> 00:04:10,150
‫لذا حدده وقم بتعيين مربع الاختيار هذا لجعله نقيًا.

59
00:04:10,360 --> 00:04:14,380
‫وماذا يحدث لتدفق التنفيذ الآن.

60
00:04:14,380 --> 00:04:17,380
‫ما تم توصيله حاليًا من خلال الوظيفة.

61
00:04:17,380 --> 00:04:18,600
‫أين يذهب؟

62
00:04:18,610 --> 00:04:20,770
‫أوقف الفيديو واذهب.

63
00:04:23,870 --> 00:04:24,410
‫تمام.

64
00:04:24,410 --> 00:04:25,360
‫مرحبًا بعودتك.

65
00:04:25,370 --> 00:04:27,460
‫لذلك دعونا نختار لديه ذخيرة.

66
00:04:27,470 --> 00:04:34,760
‫سوف نتحقق من خانة الاختيار الخالصة وستلاحظ على الفور أن دبابيس التنفيذ تختفي وأن تدفق

67
00:04:34,760 --> 00:04:41,360
‫التنفيذ الذي كان يتدفق سابقًا به ذخيرة ينتقل الآن مباشرة إلى بيان الفرع الخاص

68
00:04:41,360 --> 00:04:48,770
‫بنا ، وهو بالضبط ما نريده الآن به ذخيرة ستذهب فقط يتم تشغيلها بمجرد تشغيل بيان الفرع للحصول

69
00:04:48,770 --> 00:04:51,820
‫على القيمة المعادة.

70
00:04:51,830 --> 00:05:00,500
‫الآن كلمة تحذير استخدم مربع الاختيار هذا فقط عندما تكون متأكدًا من أن الوظيفة ليس لها آثار جانبية.

71
00:05:00,500 --> 00:05:08,180
‫الحالات الشائعة وحالات الاستخدام لهذا هي عندما تحاول وظيفتك ببساطة حساب قيمة مثل

72
00:05:08,180 --> 00:05:09,290
‫الذخيرة.

73
00:05:09,290 --> 00:05:17,540
‫وهذا هو السبب في أن هذه الوظيفة لا تتبع اصطلاح تسمية الفعل لأنها لا تفعل شيئًا

74
00:05:17,540 --> 00:05:21,980
‫، أو تحصل على شيء ما أو تجيب على سؤال.

75
00:05:21,980 --> 00:05:24,680
‫في هذه الحالة ، السؤال له ذخيرة.

76
00:05:24,680 --> 00:05:29,330
‫وفي الواقع ، يمكننا حتى وضع علامة استفهام صغيرة في وظيفتنا ، تسمية شيء يمكنك

77
00:05:29,330 --> 00:05:35,390
‫القيام به في Blueprint لا يمكنك القيام به في C ++ ، مما يسمح لنا برؤية ، نعم ، هذه الوظيفة تجيب على

78
00:05:35,390 --> 00:05:36,080
‫سؤال.

79
00:05:36,080 --> 00:05:37,850
‫إنه لا يحاول أن يفعل شيئًا.

80
00:05:37,850 --> 00:05:44,270
‫غالبًا ما يكون التمييز بين الدوال البحتة وغير الصافية هو ما إذا كانت تتناسب مع الفعل أو

81
00:05:44,270 --> 00:05:46,490
‫ما إذا كانت تتناسب مع سؤال.

82
00:05:46,490 --> 00:05:49,160
‫للمراجعة ، دعونا نلقي نظرة على مسرد المصطلحات الخاص بنا.

83
00:05:49,430 --> 00:05:56,660
‫التأثير الجانبي هو تأثير يمكن ملاحظته لوظيفة رأيناها ورأينا أمثلة على تلك الوظائف.

84
00:05:56,660 --> 00:06:04,010
‫والوظيفة الصرفة هي وظيفة ليس لها آثار جانبية ، مثل الحصول على وظائف أو وظائف الإجابة

85
00:06:04,010 --> 00:06:05,270
‫على الأسئلة.

86
00:06:05,390 --> 00:06:06,680
‫هذا كل شيء في هذه المحاضرة.

87
00:06:06,680 --> 00:06:08,120
‫سأراك في المرحلة التالية.

