+1 امتیاز
قبل در برنامه نویسی توسط (426 امتیاز)
ویرایش شده قبل توسط
public static void main(String[] args) {
    List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 0, 9);
    nums.forEach(myAction(it -> System.out.println(100 / it)));
  }
  public static Consumer<Integer> myAction(Consumer< Integer> consumer) {
    return i -> {
      try {
        consumer.accept(i);
      } catch (ArithmeticException e) {
        System.out.println(e.getMessage());
      }
    };
  }

این متد myaction در واقع یک lambda wrapper است که کد رو تمیز تر کنه یعنی جای که داریم از lambda استفاده مکنیم exception handling انجام ندیم و کده خوشگل تری داشته باشیم اما اون i دقبقا چی شد و از کجا اومده؟

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

متد myAction درون تابع forEach فراخوانی شده پس نوع بازگشتی آن باید Consumer باشد. Consumer تابعی است یک پارامتر می گیرد و از آن استفاده می کند و چیزی هم بر نمی گرداند (void). حالا مقدار بازگشتی متد myAction با استفاده از lambda تعریف شده که i همان یک پارامتری است که Consumer لازم دارد که در ادامه داستان جای متغییر it مینشیند.

قبل توسط (426 امتیاز)
ویرایش شده قبل توسط
خیلی ممنونم از جوابتون

سوالات مشابه

+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+2 امتیاز
1 پاسخ 671 بازدید
+1 امتیاز
1 پاسخ 305 بازدید
0 امتیاز
1 پاسخ 383 بازدید
0 امتیاز
1 پاسخ 433 بازدید
0 امتیاز
1 پاسخ 1.1هزار بازدید
...