💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ دانشجوی سون‌لرن
فانکشن sum
جامعه جاوا (وب و دسکتاپ) ایجاد شده در ۰۷ اردیبهشت ۱۴۰۲

راستش من متوجه نشدم فانکشن sum چجوری فهمید باید مقدار قبلی رو درون total نگه داره و و مقدار گل‌های زده درون ورودی goal باشه و بعد باهم جمع بشن.

BinaryOperator<Integer> sum = (total,goal) -> total + goal;
Integer totalGoals = players.stream().map(Player::getGoalScore).reduce(0, sum);

سلام امیر جان,


زمانی که تعدادی مقدار داریم و هدف تبدیل تمامی این مقادیر به یک مقدارهست میتونیم از فانکشن reduce استفاده کنیم.

به طور مثال اینجا تعداد زیادی گل زده شده داریم و میخایم اونها رو به یک مقدار که جمع اونها هست تبدیل کنیم و به عنوان مقدار خروجی بگیریم.


فانکشن reduce دو تا لامبدا میگیره که اولی مقدار اولیه هست که جمع ما با اون شروع میشه که اینجا مقدار صفر هست.

لامبدا دوم یک فانکشن هست به نام Accumulator که با مقدار اولی که بهش دادیم تعریف میشه یعنی 

int total = 0

بعد یکی یکی تعداد گلهای زده شده رو بهش این فانکشن اضافه میکنه یعنی 

total = total + gol_zade_shode_1

total = total + gol_zade_shode_2

total = total + gol_zade_shode_3

...

و در نهایت مقدار total که مجموع گلهای زده شده هست به عنوان مقدار نهایی بازگردانده میشه.



بهترین پاسخ
سپهر نامدار ۰۸ اردیبهشت ۱۴۰۲، ۱۲:۳۱