1
00:00.110 --> 00:05.810
دوباره خوش آمدید، در چند ویدیوی بعدی، مطالب شگفت‌انگیزی براتون دارم که شما رو هیجان‌زده می‌کنه و

2
00:05.810 --> 00:11.270
امیدوارم براتون بیش از حد سنگین نباشه، اما من اون رو واقعاً گام به گام و بسیار آهسته تشریح خواهم کرد.

3
00:11.270 --> 00:17.270
و ما عمیقاً پیش خواهیم رفت تا تقریباً هر چیزی رو که قراره انجام بدیم، درک کنیم.

4
00:17.270 --> 00:29.690
یک چیز وجود داره که هنوز قادر به درک کاملش نخواهیم بود، چون پرداختن به اون هم واقعاً کمی زیاد خواهد بود، چون **Delegates** (دلیگیت‌ها) چیزی هستن که بعداً در دوره پوشش خواهیم داد،

5
00:29.690 --> 00:34.400
و یک ساعت یا بیشتر طول می‌کشه تا واقعاً عمیقاً به **delegates** بپردازیم.

6
00:34.400 --> 00:40.040
با این حال، ما از **predicates** (محمول‌ها) استفاده خواهیم کرد که به اصطلاح نوعی از **delegates** هستن.

7
00:40.040 --> 00:44.900
اما برای اینکه بتونیم از **predicates** استفاده کنیم، نیازی به درک کامل **delegates** نداریم.

8
00:44.900 --> 00:47.300
و اصلاً چرا باید بخوایم از **predicates** استفاده کنیم؟

9
00:47.300 --> 00:51.170
چون کلمه کلیدی اون در ارائه، اوایل این فصل، وجود داشت.

10
00:51.170 --> 00:52.880
پس چرا باید بخوایم از **predicates** استفاده کنیم؟

11
00:52.880 --> 00:54.920
بیایید به مثال خودمون اینجا نگاه کنیم.

12
00:54.920 --> 00:57.740
پس ما **list** خودمون رو اینجا داریم، درسته؟

13
00:57.740 --> 00:59.270
**list** اعدادمون.

14
00:59.270 --> 01:03.830
و بیایید چند عدد دیگه اینجا اضافه کنیم. مثلاً **25** و **18**.

15
01:03.830 --> 01:06.140
پس حالا من یک سری عدد دارم.

16
01:06.140 --> 01:13.490
کاری که می‌خوام انجام بدم اینه که تمام اعدادی رو که بزرگتر از **10** یا بالاتر از **10** هستن، پیدا کنم.

17
01:13.490 --> 01:14.540
چطور باید این کار رو انجام بدم؟

18
01:14.540 --> 01:21.050
خب، قضیه اینه که می‌تونم جلو برم و از **numbers.** استفاده کنم و از **Find** یا **FindAll** استفاده کنم.

19
01:21.050 --> 01:23.870
پس **Find** فقط یک **int** رو به من می‌ده.

20
01:23.870 --> 01:29.150
به عنوان نتیجه، **FindAll** یک **list** از **int**ها رو به من می‌ده.

21
01:29.150 --> 01:38.480
پس این متد **FindAll**، و شما از قبل می‌تونید ببینید که می‌گه **x = > x == 10**. پس تو این خط چی می‌گذره؟

22
01:38.480 --> 01:40.400
ما قبلاً چیزی شبیه به این رو دیدیم.

23
01:40.400 --> 01:42.410
و من گفتم فعلاً فقط ازش صرف نظر کنید.

24
01:42.410 --> 01:44.600
اما حالا دیگه زمان صرف نظر کردن ازش نیست.

25
01:44.600 --> 01:47.180
پس من دقیقاً توضیح می‌دم که چطور کار می‌کنه.

26
01:47.180 --> 01:55.790
پس بیایید فقط از این عبارت اینجا استفاده کنیم که واقعاً می‌گه **x** علامت مساوی بزرگتر از علامت **x == 10**.

27
01:55.790 --> 02:01.460
پس کاری که این انجام می‌ده اینه که تمام **10**ها رو داخل **list** من پیدا می‌کنه و یک **list** رو **return** می‌کنه.

28
02:01.460 --> 02:06.680
با این حال، چیزی که ما به متد **FindAll** اینجا پاس می‌دیم، یک **predicate<int> match** هست.

29
02:06.680 --> 02:07.910
خب **predicate** چیه؟

30
02:07.910 --> 02:17.120
خب می‌تونید روش کلیک کنید و نگاه کنید. اون یک **public delegate bool predicate<in T>** هست، با این همه کلمه کلیدی که هنوز بهشون دست نزدیم.

31
02:17.120 --> 02:18.230
و خیلی زوده.

32
02:18.230 --> 02:21.770
پس ما اینجا داریم از **generics** و **delegates** استفاده می‌کنیم.

33
02:21.770 --> 02:26.210
و همونطور که گفتم، برای شما در این مرحله اولیه از دوره، خیلی زیاده.

34
02:26.210 --> 02:29.540
با این حال، من به شما توضیح می‌دم که چطور اون رو به کار ببرید، اوکی؟

35
02:29.540 --> 02:39.320
چطور یک **predicate** ایجاد کنید که بعداً بتونید ازش برای پیدا کردن آیتم‌هایی استفاده کنید که به اصطلاح با یک سری الزامات خاص مطابقت دارن.

36
02:39.320 --> 02:45.920
پس بیایید فقط به این نگاه کنیم که ما قرار نیست بگیم برابر با **10**، بلکه **10** و بزرگتر از **10**.

37
02:45.920 --> 02:49.490
و بعد بیایید این **list** رو نمایش بدیم.

38
02:49.490 --> 02:56.900
پس بیایید در واقع این رو داخل یک **list** ذخیره کنیم. بعد از اون واقعاً به درک دقیق آنچه در اینجا می‌گذره خواهیم پرداخت.

39
02:56.900 --> 03:08.930
و فقط درک کنید که این یک **list** از اعدادی رو برمی‌گردونه که **10** و بالاتر هستن، اوکی؟ پس این کاریه که این خط انجام می‌ده.

40
03:08.930 --> 03:11.390
حالا بیایید نتیجه اون رو ذخیره کنیم.

41
03:11.390 --> 03:15.380
چون اگه روی **FindAll** نشانگر رو نگه دارید، می‌گه یک **list** از **int**ها رو برمی‌گردونه.

42
03:15.380 --> 03:36.080
پس بیایید جلو بریم و بگیم **List** یا به این شکل، **List<int>** که **higherTen** (بالاتر از ده) باشه اسمش، قراره نامش باشه، شاید دقیق‌تر **higherEqualTen** (بالاتر مساوی ده). پس اون **list** خواهد بود که نتیجه هر کاری که اینجا انجام می‌دیم، خواهد بود.

43
03:36.080 --> 03:44.330
پس همونطور که می‌دونید، اگه یک متد رو مثل کاری که ما اینجا روی **list** خودمون انجام می‌دیم، فراخوانی کنید، می‌تونه چیزی رو **return** کنه. و در این مورد، چیزی رو **return** می‌کنه.

44
03:44.330 --> 03:48.290
پس یک **list** از آیتم‌ها رو **return** می‌کنه. پس اون وقت این **higherEqualTen** خواهد بود.

45
03:48.290 --> 03:59.630
پس بیایید جلو بریم و فقط تمام اعداد خودمون رو نمایش بدیم. پس **"All numbers ten and higher in our list of numbers"** (تمام اعداد ده و بالاتر در **list** اعداد ما)، اوکی.

46
03:59.630 --> 04:02.000
و من قراره از شر این **"unsorted list"** خلاص بشم.

47
04:02.000 --> 04:06.770
خب در واقع بیایید اون رو نگه داریم تا بدونیم چه آیتم‌هایی در **list** داریم.

48
04:06.770 --> 04:15.350
پس حالا بیایید این رو اجرا کنیم و خواهیم دید **"unsorted list"** ما **10، 5، 15، 3، 9، 25 و 18** هست. و بعد می‌گه **"all number"**.

49
04:15.350 --> 04:22.670
اوکی، من **number ten and higher in our list numbers** رو فراموش کردم. پس می‌بینید **10، 15، 25 و 18**.

50
04:22.670 --> 04:25.820
پس **5، 3، 9** ده و بالاتر نیستن.

51
04:25.820 --> 04:30.800
پس اون‌ها بخشی از **list** جدیدی که ما ایجاد کردیم، نیستن. اوکی.

52
04:30.800 --> 04:32.810
پس این چیزیه که اینجا اتفاق افتاد.

53
04:32.810 --> 04:38.210
حالا در ویدیوی بعدی بیایید آنچه در اینجا اتفاق می‌افته رو تشریح کنیم.

54
04:38.210 --> 04:45.140
اول، واقعاً اون رو درک کنید و بعد بریم سراغ اینکه **predicate** کمی بیشتر چیست، اوکی؟

55
04:45.140 --> 04:47.840
پس برای این ویدیو کافیه.

56
04:47.840 --> 04:53.570
همونطور که گفتم نگران نباشید. چیزی که اینجا دیدید رو گام به گام پوشش خواهیم داد. بسیار خب.

57
04:53.570 --> 04:55.370
پس شما رو در ویدیوی بعدی می‌بینم.