1
00:00.200 --> 00:07.970
بسیار خب، پس بیایید **predicates** / **lambdas** رو یک بار دیگه با چند مثال دیگه تمرین کنیم.

2
00:07.970 --> 00:10.430
ما این **FindAll** رو داریم.

3
00:10.430 --> 00:14.990
اما یک متد بسیار باحال دیگه هم وجود داره که **Any** نامیده می‌شه.

4
00:15.110 --> 00:24.290
و متد **Any** از یک **lambda** استفاده می‌کنه تا هر عدد رو در **list** تست کنه و ببینه آیا عدد خاصی در اون وجود داره یا نه.

5
00:24.290 --> 00:28.370
اوکی، پس بیایید از **list** قبلی خودمون استفاده کنیم.

6
00:28.370 --> 00:32.390
ما این **list** رو داریم که شامل 10، 15، 3 و الی آخره.

7
00:32.390 --> 00:37.550
و حالا کاری که می‌تونیم انجام بدیم اینه که جلو بریم و بگیم **numbers.Any**.

8
00:37.910 --> 00:41.750
پس اینجا می‌تونید ببینید دو **overload** متفاوت وجود داره.

9
00:41.750 --> 00:51.290
**Overloads** دو تا **method** متفاوت با نام یکسان هستن که تعداد پارامترهای متفاوت یا کلاً پارامترهای متفاوتی دارن.

10
00:51.290 --> 00:57.260
و می‌تونید ببینید که این یکی از این متد **Any** به یک **predicate** نیاز داره.

11
00:57.260 --> 01:02.360
و می‌تونید اینجا ببینید که یک **predicate** تابعی برای تست هر عنصر برای یک شرط هست.

12
01:02.360 --> 01:02.990
اوکی.

13
01:02.990 --> 01:05.090
پس چطور می‌تونیم این کار رو اینجا انجام بدیم؟

14
01:05.090 --> 01:08.690
خب، می‌تونیم جلو بریم و همون کاری رو انجام بدیم که قبلاً انجام دادیم.

15
01:08.690 --> 01:14.180
می‌تونیم فقط بگیم آیا هیچ **x**ی وجود داره که بزرگتر از چیزی باشه.

16
01:14.180 --> 01:17.750
پس **x** تبدیل می‌شود به **x** بزرگتر از صفر.

17
01:17.750 --> 01:24.440
پس این اینجا، حالا فرض کنید می‌خوایم ببینیم آیا عددی بالاتر از 20 وجود داره.

18
01:24.440 --> 01:27.920
پس می‌تونستیم به این شکل جلو بریم و بگیم.

19
01:27.920 --> 01:31.010
پس حالا این یک **bool** رو **return** می‌کنه.

20
01:31.010 --> 01:34.670
پس **return** می‌کنه که آیا **true** هست یا نه.

21
01:34.730 --> 01:37.400
آیا عددی وجود داره که بزرگتر از 20 باشه.

22
01:37.400 --> 01:47.360
پس کاری که می‌تونیم انجام بدیم اینه که نتیجه رو به این شکل ذخیره کنیم که می‌گیم **bool hasLargeNumber** و ما قراره فقط از این **numbers.Any** استفاده کنیم.

23
01:47.910 --> 01:54.320
و اینجا داریم یک **lambda expression** رو پاس می‌دیم که می‌تونه به عنوان یک **predicate** استفاده بشه، اوکی؟

24
01:54.320 --> 02:02.870
پس همه **lambda expressions**، **predicate** نیستن اما **predicates**، **lambda expressions** یا **methods** رو نگه می‌دارن، اوکی.

25
02:02.870 --> 02:09.650
پس حالا کاری که می‌تونیم انجام بدیم اینه که بگیم اگه **hasLargeNumber**، ما قراره روی کنسول بنویسیم:

26
02:09.650 --> 02:16.460
"اعداد بزرگ در **list** اعداد وجود دارند"، اوکی.

27
02:16.460 --> 02:23.570
و در غیر این صورت قراره بگید "هیچ عدد بزرگی در **list** وجود ندارد"، اوکی.

28
02:23.570 --> 02:27.890
پس بیایید این رو اجرا کنیم و ببینیم آیا هیچ عدد بزرگی داریم یا نه.

29
02:27.890 --> 02:32.840
و می‌گه "اعداد بزرگ در **list** اعداد وجود دارند".

30
02:32.840 --> 02:37.040
این به این دلیله که ما گفتیم یک عدد بزرگ هر چیزی بالاتر از 20 هست.

31
02:37.040 --> 02:44.750
پس اگه بگیم عدد بزرگ هر چیزی بالاتر از 30 هست و دوباره اون رو اجرا کنیم، احتمالاً یک مقدار **true** دریافت نمی‌کنیم.

32
02:45.140 --> 02:47.390
پس "هیچ عدد بزرگی در **list** وجود ندارد".

33
02:47.390 --> 02:57.980
این به این دلیله که ما یک 30 یا بالاتر داخل **list** اعداد خودمون نداریم، یا در واقع بالای 30، نه 30 یا بالاتر، بلکه 31 و بالاتر.

34
02:57.980 --> 02:58.610
بسیار خب.

35
02:58.610 --> 03:00.350
پس شما رو در ویدیوی بعدی می‌بینم.